{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a9663ad9-217c-46d3-befc-8ccabeba890b",
   "metadata": {},
   "source": [
    "# 5 Levels Of Text Splitting\n",
    "\n",
    "In this tutorial we are reviewing the 5 Levels Of Text Splitting. This is an unofficial list put together for fun and educational purposes.\n",
    "\n",
    "Ever try to put a long piece of text into ChatGPT but it tells you it’s too long? Or you're trying to give your application better long term memory, but it’s still just not quite working.\n",
    "\n",
    "One of the most effective strategies to improve performance of your language model applications is to split your large data into smaller pieces. This is call splitting or chunking (we'll use these terms interchangeably). In the world of multi-modal, splitting also applies to images.\n",
    "\n",
    "We are going to cover a lot, but if you make it to the end, I guarantee you’ll have a solid grasp on chunking theory, strategies, and resources to learn more.\n",
    "\n",
    "**Levels Of Text Splitting**\n",
    "* **Level 1: [Character Splitting](#CharacterSplitting)** - Simple static character chunks of data\n",
    "* **Level 2: [Recursive Character Text Splitting](#RecursiveCharacterSplitting)** - Recursive chunking based on a list of separators\n",
    "* **Level 3: [Document Specific Splitting](#DocumentSpecific)** - Various chunking methods for different document types (PDF, Python, Markdown)\n",
    "* **Level 4: [Semantic Splitting](#SemanticChunking)** - Embedding walk based chunking\n",
    "* **Level 5: [Agentic Splitting](#AgenticChunking)** - Experimental method of splitting text with an agent-like system. Good for if you believe that token cost will trend to $0.00\n",
    "* **\\*Bonus Level:\\*** **[Alternative Representation Chunking + Indexing](#BonusLevel)** - Derivative representations of your raw text that will aid in retrieval and indexing\n",
    "\n",
    "**Notebook resources:**\n",
    "* [Video Overview]() - Walkthrough of this code with commentary\n",
    "* [ChunkViz.com](https://www.chunkviz.com/) - Visual representation of chunk splitting methods\n",
    "* [RAGAS](https://github.com/explodinggradients/ragas) - Retrieval evaluation framework\n",
    "\n",
    "This tutorial was created with ❤️ by [Greg Kamradt](https://twitter.com/GregKamradt). MIT license, attribution is always welcome.\n",
    "\n",
    "This tutorial will use code from LangChain (`pip install langchain`) & Llama Index (`pip install llama-index`)\n",
    "\n",
    "**Evaluations**\n",
    "\n",
    "It's important to test your chunking strategies in retrieval evals. It doesn't matter how you chunk if the performance of your application isn't great.\n",
    "\n",
    "Eval Frameworks:\n",
    "\n",
    "* [LangChain Evals](https://python.langchain.com/docs/guides/evaluation/)\n",
    "* [Llama Index Evals](https://docs.llamaindex.ai/en/stable/module_guides/evaluating/root.html)\n",
    "* [RAGAS Evals](https://github.com/explodinggradients/ragas)\n",
    "\n",
    "I'm not going to demo evals for each method because success is domain specific. The arbitrary eval that I pick may not be suitable for your data. If anyone is interested in collaborating on a rigorous evaluation of different chunking strategies, please reach out (contact@dataindependent.com).\n",
    "\n",
    "If you only walk away from this tutorial with one thing have it be the **The Chunking Commandment**\n",
    "\n",
    "**The Chunking Commandment:** Your goal is not to chunk for chunking sake, our goal is to get our data in a format where it can be retrieved for value later.\n",
    "\n",
    "## Level 1: Character Splitting <a id=\"CharacterSplitting\"></a>\n",
    "Character splitting is the most basic form of splitting up your text. It is the process of simply dividing your text into N-character sized chunks regardless of their content or form.\n",
    "\n",
    "This method isn't recommended for any applications - but it's a great starting point for us to understand the basics.\n",
    "\n",
    "* **Pros:** Easy & Simple\n",
    "* **Cons:** Very rigid and doesn't take into account the structure of your text\n",
    "\n",
    "Concepts to know:\n",
    "* **Chunk Size** - The number of characters you would like in your chunks. 50, 100, 100,000, etc.\n",
    "* **Chunk Overlap** - The amount you would like your sequential chunks to overlap. This is to try to avoid cutting a single piece of context into multiple pieces. This will create duplicate data across chunks.\n",
    "\n",
    "First let's get some sample text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c96299fc-30f5-4edf-ac23-23a29f9c7282",
   "metadata": {},
   "outputs": [],
   "source": [
    "text = \"This is the text I would like to chunk up. It is the example text for this exercise\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e1cf67e-98d7-48bd-9867-f72be72e3f4a",
   "metadata": {},
   "source": [
    "Then let's split this text manually"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f11fb88f-17ed-44c2-b4de-a8a527fe63c7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['This is the text I would like to ch',\n",
       " 'unk up. It is the example text for ',\n",
       " 'this exercise']"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a list that will hold your chunks\n",
    "chunks = []\n",
    "\n",
    "chunk_size = 35 # Characters\n",
    "\n",
    "# Run through the a range with the length of your text and iterate every chunk_size you want\n",
    "for i in range(0, len(text), chunk_size):\n",
    "    chunk = text[i:i + chunk_size]\n",
    "    chunks.append(chunk)\n",
    "chunks"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "140085b7-c6af-4003-923c-73feb1825965",
   "metadata": {},
   "source": [
    "Congratulations! You just split your first text. We have long way to go but you're already making progress. Feel like a language model practitioner yet?\n",
    "\n",
    "When working with text in the language model world, we don't deal with raw strings. It is more common to work with documents. Documents are objects that hold the text you're concerned with, but also additional metadata which makes filtering and manipulation easier later.\n",
    "\n",
    "We could convert our list of strings into documents, but I'd rather start from scratch and create the docs.\n",
    "\n",
    "Let's load up LangChains `CharacterSplitter` to do this for us"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "d85945f0-4a09-4bd9-bdb6-bafe03089053",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain.text_splitter import CharacterTextSplitter"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff5f3c0a-09c9-45a9-8f47-d28baf22b201",
   "metadata": {},
   "source": [
    "Then let's load up this text splitter. I need to specify `chunk overlap` and `separator` or else we'll get funk results. We'll get into those next"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3dcbeb8d-c5a0-4047-8250-967313c20935",
   "metadata": {},
   "outputs": [],
   "source": [
    "text_splitter = CharacterTextSplitter(chunk_size = 35, chunk_overlap=0, separator='', strip_whitespace=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ae25bbe-d7d1-44da-820b-3cd34a1cfc67",
   "metadata": {},
   "source": [
    "Then we can actually split our text via `create_documents`. Note: `create_documents` expects a list of texts, so if you just have a string (like we do) you'll need to wrap it in `[]`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "afe4945b-ce08-49aa-a5dc-65a0e59922f2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Document(page_content='This is the text I would like to ch'),\n",
       " Document(page_content='unk up. It is the example text for '),\n",
       " Document(page_content='this exercise')]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text_splitter.create_documents([text])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "331025f4-6ef4-4459-bcb6-df7824e78ce4",
   "metadata": {},
   "source": [
    "Notice how this time we have the same chunks, but they are in documents. These will play nicely with the rest of the LangChain world. Also notice how the trailing whitespace on the end of the 2nd chunk is missing. This is because LangChain removes it, see [this line](https://github.com/langchain-ai/langchain/blob/f36ef0739dbb548cabdb4453e6819fc3d826414f/libs/langchain/langchain/text_splitter.py#L167) for where they do it. You can avoid this with `strip_whitespace=False`"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ed0f193-4098-4fb1-a42f-7f96cd182188",
   "metadata": {},
   "source": [
    "**Chunk Overlap & Separators**\n",
    "\n",
    "**Chunk overlap** will blend together our chunks so that the tail of Chunk #1 will be the same thing and the head of Chunk #2 and so on and so forth.\n",
    "\n",
    "This time I'll load up my overlap with a value of 4, this means 4 characters of overlap"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "fc66f496-7b0d-4b2a-a43d-e8f06d58c934",
   "metadata": {},
   "outputs": [],
   "source": [
    "text_splitter = CharacterTextSplitter(chunk_size = 35, chunk_overlap=4, separator='')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "fd5d7e36-b592-430e-9069-cc025c78d7ef",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Document(page_content='This is the text I would like to ch'),\n",
       " Document(page_content='o chunk up. It is the example text'),\n",
       " Document(page_content='ext for this exercise')]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text_splitter.create_documents([text])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dcd4aaa8-b90b-499e-b2d5-bc623b5bb751",
   "metadata": {},
   "source": [
    "Notice how we have the same chunks, but now there is overlap between 1 & 2 and 2 & 3. The 'o ch' on the tail of Chunk #1 matches the 'o ch' of the head of Chunk #2.\n",
    "\n",
    "I wanted a better way to visualize this, so I made [ChunkViz.com](www.chunkviz.com) to help show it. Here's what the same text looks like.\n",
    "\n",
    "<div style=\"text-align: center;\">\n",
    "    <img src=\"static/ChunkVizCharacter34_4_w_overlap.png\" alt=\"image\" style=\"max-width: 800px;\">\n",
    "</div>\n",
    "\n",
    "static/ChunkVizCharacterRecursive.png\n",
    "\n",
    "Check out how we have three colors, with two overlaping sections.\n",
    "\n",
    "**Separators** are character(s) sequences you would like to split on. Say you wanted to chunk your data at `ch`, you can specify it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "814ce9aa-17c3-4205-b433-2eae612c2225",
   "metadata": {},
   "outputs": [],
   "source": [
    "text_splitter = CharacterTextSplitter(chunk_size = 35, chunk_overlap=0, separator='ch')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "bb759b1f-dab0-4f5e-a0c0-220374313da6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Document(page_content='This is the text I would like to'),\n",
       " Document(page_content='unk up. It is the example text for this exercise')]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text_splitter.create_documents([text])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "72c7ff4a-b6f0-4924-9a9c-2791dddc5b37",
   "metadata": {},
   "source": [
    "#### Llama Index\n",
    "\n",
    "[Llama Index](https://www.llamaindex.ai/) is a great choice for flexibility in the chunking and indexing process. They provide node relationships out of the box which can aid in retrieval later.\n",
    "\n",
    "Let's take a look at their sentence splitter. It is similar to the character splitter, but using its default settings, it'll split on sentences instead."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "624832d6-f3fd-45c4-b52e-bbc86e5e3cd0",
   "metadata": {},
   "outputs": [],
   "source": [
    "from llama_index.text_splitter import SentenceSplitter\n",
    "from llama_index import SimpleDirectoryReader"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6e77494-a253-4414-b32d-2246fcb396ef",
   "metadata": {},
   "source": [
    "Load up your splitter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "ef9e6627-81a5-463d-9180-5ff2ff1d40f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "splitter = SentenceSplitter(\n",
    "    chunk_size=200,\n",
    "    chunk_overlap=15,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "23214df1-064d-47ad-9058-f9a5f113b6cf",
   "metadata": {},
   "source": [
    "Load up your document"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7cafba29-b973-4b37-806f-6f4893eae02e",
   "metadata": {},
   "outputs": [],
   "source": [
    "documents = SimpleDirectoryReader(\n",
    "    input_files=[\"../../data/PGEssays/mit.txt\"]\n",
    ").load_data()\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2ceae08-1f5e-46bc-9d98-e95182fe8c3c",
   "metadata": {},
   "source": [
    "Create your nodes. Nodes are similar to documents but with more relationship data added to them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "52f9a2e2-3d56-4727-afce-c81c13089324",
   "metadata": {},
   "outputs": [],
   "source": [
    "nodes = splitter.get_nodes_from_documents(documents)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ec353aac-ea8f-421a-9895-0af8afdc08e0",
   "metadata": {},
   "source": [
    "Then let's take a look at one"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "898a421f-54a0-45a4-8acb-c7087b6a883f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TextNode(id_='e36994ad-25c5-41f3-b38d-96ee6b956fc7', embedding=None, metadata={'file_path': '../../data/PGEssays/mit.txt', 'file_name': 'mit.txt', 'file_type': 'text/plain', 'file_size': 36045, 'creation_date': '2024-01-22', 'last_modified_date': '2023-12-21', 'last_accessed_date': '2024-03-11'}, excluded_embed_metadata_keys=['file_name', 'file_type', 'file_size', 'creation_date', 'last_modified_date', 'last_accessed_date'], excluded_llm_metadata_keys=['file_name', 'file_type', 'file_size', 'creation_date', 'last_modified_date', 'last_accessed_date'], relationships={<NodeRelationship.SOURCE: '1'>: RelatedNodeInfo(node_id='881d6935-c507-474e-8d81-6c735776f9cf', node_type=<ObjectType.DOCUMENT: '4'>, metadata={'file_path': '../../data/PGEssays/mit.txt', 'file_name': 'mit.txt', 'file_type': 'text/plain', 'file_size': 36045, 'creation_date': '2024-01-22', 'last_modified_date': '2023-12-21', 'last_accessed_date': '2024-03-11'}, hash='5444cdff4f48bf05f4757827161d4fce69d517cbab26553227c095d6d68980c7'), <NodeRelationship.NEXT: '3'>: RelatedNodeInfo(node_id='95935f53-4da6-4bc8-af97-c890e4ee42e3', node_type=<ObjectType.TEXT: '1'>, metadata={}, hash='5ebb6555924d31f20f1f5243ea3bfb18231fbb946cb76f497dbc73310fa36d3a')}, hash='fe82de145221729f15921a789c2923659746b7304aa2ce2952b923f800d2b85d', text=\"Want to start a startup?  Get funded by\\nY Combinator.\\n\\n\\n\\n\\nOctober 2006(This essay is derived from a talk at MIT.)\\nTill recently graduating seniors had two choices: get a job or go\\nto grad school.  I think there will increasingly be a third option:\\nto start your own startup.  But how common will that be?I'm sure the default will always be to get a job, but starting a\\nstartup could well become as popular as grad school.  In the late\\n90s my professor friends used to complain that they couldn't get\\ngrad students, because all the undergrads were going to work for\\nstartups.\", start_char_idx=2, end_char_idx=576, text_template='{metadata_str}\\n\\n{content}', metadata_template='{key}: {value}', metadata_seperator='\\n')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nodes[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "539aa1a2-67b8-4585-b0d3-306703ea856b",
   "metadata": {},
   "source": [
    "As you can see there is a lot more relationship data held within Llama Index's nodes. We'll talk about those later, I don't want to get ahead of ourselves\n",
    "\n",
    "Basic Character splitting is likely only useful for a few applications, maybe yours!\n",
    "\n",
    "## Level 2: Recursive Character Text Splitting\n",
    "<a id=\"RecursiveCharacterSplitting\"></a>\n",
    "Let's jump a level of complexity.\n",
    "\n",
    "The problem with Level #1 is that we don't take into account the structure of our document at all. We simply split by a fix number of characters.\n",
    "\n",
    "The Recursive Character Text Splitter helps with this. With it, we'll specify a series of separatators which will be used to split our docs.\n",
    "\n",
    "You can see the default separators for LangChain [here](https://github.com/langchain-ai/langchain/blob/9ef2feb6747f5a69d186bd623b569ad722829a5e/libs/langchain/langchain/text_splitter.py#L842). Let's take a look at them one by one.\n",
    "\n",
    "* \"\\n\\n\" - Double new line, or most commonly paragraph breaks\n",
    "* \"\\n\" - New lines\n",
    "* \" \" - Spaces\n",
    "* \"\" - Characters\n",
    "\n",
    "I'm not sure why a period (\".\") isn't included on the list, perhaps it is not universal enough? If you know, let me know.\n",
    "\n",
    "This is the swiss army knife of splitters and my first choice when mocking up a quick application. If you don't know which splitter to start with, this is a good first bet.\n",
    "\n",
    "Let's try it out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "49f42bea-3d06-404d-9f8c-f15f7ff7591b",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain.text_splitter import RecursiveCharacterTextSplitter"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb6f79f4-769b-474b-8d7d-19cb48407cd6",
   "metadata": {},
   "source": [
    "Then let's load up a larger piece of text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "0772695d-0c5e-4e19-bb69-14e9bd7a15a7",
   "metadata": {},
   "outputs": [],
   "source": [
    "text = \"\"\"\n",
    "One of the most important things I didn't understand about the world when I was a child is the degree to which the returns for performance are superlinear.\n",
    "\n",
    "Teachers and coaches implicitly told us the returns were linear. \"You get out,\" I heard a thousand times, \"what you put in.\" They meant well, but this is rarely true. If your product is only half as good as your competitor's, you don't get half as many customers. You get no customers, and you go out of business.\n",
    "\n",
    "It's obviously true that the returns for performance are superlinear in business. Some think this is a flaw of capitalism, and that if we changed the rules it would stop being true. But superlinear returns for performance are a feature of the world, not an artifact of rules we've invented. We see the same pattern in fame, power, military victories, knowledge, and even benefit to humanity. In all of these, the rich get richer. [1]\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fbb158c-6bbe-4f49-95df-a8b43965a566",
   "metadata": {},
   "source": [
    "Now let's make our text splitter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "03ec54c4-bda6-4254-97dd-983775b1d729",
   "metadata": {},
   "outputs": [],
   "source": [
    "text_splitter = RecursiveCharacterTextSplitter(chunk_size = 65, chunk_overlap=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "887c7676-1e67-4084-94d3-59689eb399c6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Document(page_content=\"One of the most important things I didn't understand about the\"),\n",
       " Document(page_content='world when I was a child is the degree to which the returns for'),\n",
       " Document(page_content='performance are superlinear.'),\n",
       " Document(page_content='Teachers and coaches implicitly told us the returns were linear.'),\n",
       " Document(page_content='\"You get out,\" I heard a thousand times, \"what you put in.\" They'),\n",
       " Document(page_content='meant well, but this is rarely true. If your product is only'),\n",
       " Document(page_content=\"half as good as your competitor's, you don't get half as many\"),\n",
       " Document(page_content='customers. You get no customers, and you go out of business.'),\n",
       " Document(page_content=\"It's obviously true that the returns for performance are\"),\n",
       " Document(page_content='superlinear in business. Some think this is a flaw of'),\n",
       " Document(page_content='capitalism, and that if we changed the rules it would stop being'),\n",
       " Document(page_content='true. But superlinear returns for performance are a feature of'),\n",
       " Document(page_content=\"the world, not an artifact of rules we've invented. We see the\"),\n",
       " Document(page_content='same pattern in fame, power, military victories, knowledge, and'),\n",
       " Document(page_content='even benefit to humanity. In all of these, the rich get richer.'),\n",
       " Document(page_content='[1]')]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text_splitter.create_documents([text])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3fa00043-1655-4113-bb28-f3a998d5713a",
   "metadata": {},
   "source": [
    "Notice how now there are more chunks that end with a period \".\". This is because those likely are the end of a paragraph and the splitter first looks for double new lines (paragraph break).\n",
    "\n",
    "Once paragraphs are split, then it looks at the chunk size, if a chunk is too big, then it'll split by the next separator. If the chunk is still too big, then it'll move onto the next one and so forth.\n",
    "\n",
    "For text of this size, let's split on something bigger."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "6da8734e-47da-4a08-8459-9bf8bfed7fe4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Document(page_content=\"One of the most important things I didn't understand about the world when I was a child is the degree to which the returns for performance are superlinear.\"),\n",
       " Document(page_content='Teachers and coaches implicitly told us the returns were linear. \"You get out,\" I heard a thousand times, \"what you put in.\" They meant well, but this is rarely true. If your product is only half as good as your competitor\\'s, you don\\'t get half as many customers. You get no customers, and you go out of business.'),\n",
       " Document(page_content=\"It's obviously true that the returns for performance are superlinear in business. Some think this is a flaw of capitalism, and that if we changed the rules it would stop being true. But superlinear returns for performance are a feature of the world, not an artifact of rules we've invented. We see the same pattern in fame, power, military victories, knowledge, and even benefit to humanity. In all of these, the rich get richer. [1]\")]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text_splitter = RecursiveCharacterTextSplitter(chunk_size = 450, chunk_overlap=0)\n",
    "text_splitter.create_documents([text])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "1e99768f-8732-44e4-b8d8-cc5ac1fe4661",
   "metadata": {},
   "source": [
    "For this text, 450 splits the paragraphs perfectly. You can even switch the chunk size to 469 and get the same splits. This is because this splitter builds in a bit of cushion and wiggle room to allow your chunks to 'snap' to the nearest separator.\n",
    "\n",
    "Let's view this visually\n",
    "\n",
    "<div style=\"text-align: center;\">\n",
    "    <img src=\"static/ChunkVizCharacterRecursive.png\" alt=\"image\" style=\"max-width: 800px;\">\n",
    "</div>\n",
    "\n",
    "Wow - you already made it to level 2, awesome! We're on a roll. If you like the content, I send updates to email subscribers on projects I'm working on. If you want to get the scoop, sign up [here](https://mail.gregkamradt.com/signup)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c5f32a73-0c8a-498c-a3a1-3e7dba4658c9",
   "metadata": {},
   "source": [
    "## Level 3: Document Specific Splitting <a id=\"DocumentSpecific\"></a>\n",
    "\n",
    "Stepping up our levels ladder, let's start to handle document types other than normal prose in a .txt. What if you have pictures? or a PDF? or code snippets?\n",
    "\n",
    "Our first two levels wouldn't work great for this so we'll need to find a different tactic.\n",
    "\n",
    "This level is all about making your chunking strategy fit your different data formats. Let's run through a bunch of examples of this in action\n",
    "\n",
    "The Markdown, Python, and JS splitters will basically be similar to Recursive Character, but with different separators.\n",
    "\n",
    "See all of LangChains document splitters [here](https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/code_splitter) and Llama Index ([HTML](https://docs.llamaindex.ai/en/stable/module_guides/loading/node_parsers/modules.html#htmlnodeparser), [JSON](https://docs.llamaindex.ai/en/stable/module_guides/loading/node_parsers/modules.html#jsonnodeparser), [Markdown](https://docs.llamaindex.ai/en/stable/module_guides/loading/node_parsers/modules.html#markdownnodeparser))\n",
    "\n",
    "### Markdown\n",
    "\n",
    "You can see the separators [here](https://github.com/langchain-ai/langchain/blob/9ef2feb6747f5a69d186bd623b569ad722829a5e/libs/langchain/langchain/text_splitter.py#L1175).\n",
    "\n",
    "Separators:\n",
    "* `\\n#{1,6}` - Split by new lines followed by a header (H1 through H6)\n",
    "* ```` ```\\n ```` - Code blocks\n",
    "* `\\n\\\\*\\\\*\\\\*+\\n` - Horizontal Lines\n",
    "* `\\n---+\\n` - Horizontal Lines\n",
    "* `\\n___+\\n` - Horizontal Lines\n",
    "* `\\n\\n` Double new lines\n",
    "* `\\n` - New line\n",
    "* `\" \"` - Spaces\n",
    "* `\"\"` - Character"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "298fe868-0872-4fa9-9146-fa33e9dd5706",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain.text_splitter import MarkdownTextSplitter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "e1d390ed-d046-44f9-a492-9760141f7982",
   "metadata": {},
   "outputs": [],
   "source": [
    "splitter = MarkdownTextSplitter(chunk_size = 40, chunk_overlap=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "1ba14168-451b-4e9c-b1d0-d1eac6996ad3",
   "metadata": {},
   "outputs": [],
   "source": [
    "markdown_text = \"\"\"\n",
    "# Fun in California\n",
    "\n",
    "## Driving\n",
    "\n",
    "Try driving on the 1 down to San Diego\n",
    "\n",
    "### Food\n",
    "\n",
    "Make sure to eat a burrito while you're there\n",
    "\n",
    "## Hiking\n",
    "\n",
    "Go to Yosemite\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "15dcf8de-551a-4477-8e68-57c4c50ddbc4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Document(page_content='# Fun in California\\n\\n## Driving'),\n",
       " Document(page_content='Try driving on the 1 down to San Diego'),\n",
       " Document(page_content='### Food'),\n",
       " Document(page_content=\"Make sure to eat a burrito while you're\"),\n",
       " Document(page_content='there'),\n",
       " Document(page_content='## Hiking\\n\\nGo to Yosemite')]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "splitter.create_documents([markdown_text])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56591620-ef0c-41c2-b539-35ad676ed20f",
   "metadata": {},
   "source": [
    "Notice how the splits gravitate towards markdown sections. However, it's still not perfect. Check out how there is a chunk with just \"there\" in it. You'll run into this at low-sized chunks.\n",
    "\n",
    "### Python\n",
    "\n",
    "See the python splitters [here](https://github.com/langchain-ai/langchain/blob/9ef2feb6747f5a69d186bd623b569ad722829a5e/libs/langchain/langchain/text_splitter.py#L1069)\n",
    "\n",
    "* `\\nclass` - Classes first\n",
    "* `\\ndef` - Functions next\n",
    "* `\\n\\tdef` - Indented functions\n",
    "* `\\n\\n` - Double New lines\n",
    "* `\\n` - New Lines\n",
    "* `\" \"` - Spaces\n",
    "* `\"\"` - Characters\n",
    "\n",
    "\n",
    "Let's load up our splitter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "66edcde5-1e96-4b61-8636-8129d31d7850",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain.text_splitter import PythonCodeTextSplitter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "2afa8f93-6b07-484f-86ff-9836f5a5fae1",
   "metadata": {},
   "outputs": [],
   "source": [
    "python_text = \"\"\"\n",
    "class Person:\n",
    "  def __init__(self, name, age):\n",
    "    self.name = name\n",
    "    self.age = age\n",
    "\n",
    "p1 = Person(\"John\", 36)\n",
    "\n",
    "for i in range(10):\n",
    "    print (i)\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "6e8fcc85-714d-4b5c-a5ce-a3f30cfb447b",
   "metadata": {},
   "outputs": [],
   "source": [
    "python_splitter = PythonCodeTextSplitter(chunk_size=100, chunk_overlap=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "a7b6dd89-6bb9-496a-a85d-3f1871ff9cd0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Document(page_content='class Person:\\n  def __init__(self, name, age):\\n    self.name = name\\n    self.age = age'),\n",
       " Document(page_content='p1 = Person(\"John\", 36)\\n\\nfor i in range(10):\\n    print (i)')]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "python_splitter.create_documents([python_text])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c004f19-9e67-451e-abdd-b103acce2996",
   "metadata": {},
   "source": [
    "Check out how the class stays together in a single document (good), then the rest of the code is in a second document (ok).\n",
    "\n",
    "I needed to play with the chunk size to get a clean result like that. You'll likely need to do the same for yours which is why using evaluations to determine optimal chunk sizes is crucial.\n",
    "\n",
    "### JS\n",
    "\n",
    "Very similar to python. See the separators [here](https://github.com/langchain-ai/langchain/blob/9ef2feb6747f5a69d186bd623b569ad722829a5e/libs/langchain/langchain/text_splitter.py#L983).\n",
    "\n",
    "Separators:\n",
    "* `\\nfunction` - Indicates the beginning of a function declaration\n",
    "* `\\nconst` - Used for declaring constant variables\n",
    "* `\\nlet` - Used for declaring block-scoped variables\n",
    "* `\\nvar` - Used for declaring a variable\n",
    "* `\\nclass` - Indicates the start of a class definition\n",
    "* `\\nif` - Indicates the beginning of an if statement\n",
    "* `\\nfor` - Used for for-loops\n",
    "* `\\nwhile` - Used for while-loops\n",
    "* `\\nswitch` - Used for switch statements\n",
    "* `\\ncase` - Used within switch statements\n",
    "* `\\ndefault` - Also used within switch statements\n",
    "* `\\n\\n` - Indicates a larger separation in text or code\n",
    "* `\\n` - Separates lines of code or text\n",
    "* `\" \"` - Separates words or tokens in the code\n",
    "* `\"\"` - Makes every character a separate element"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "a5225b66-4d79-455b-92a1-841fa23ccc4f",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain.text_splitter import RecursiveCharacterTextSplitter, Language"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "d75090fa-4d22-4348-8452-eb50eafa784d",
   "metadata": {},
   "outputs": [],
   "source": [
    "javascript_text = \"\"\"\n",
    "// Function is called, the return value will end up in x\n",
    "let x = myFunction(4, 3);\n",
    "\n",
    "function myFunction(a, b) {\n",
    "// Function returns the product of a and b\n",
    "  return a * b;\n",
    "}\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "909fde28-43ba-4f07-b9ae-04c21db04055",
   "metadata": {},
   "outputs": [],
   "source": [
    "js_splitter = RecursiveCharacterTextSplitter.from_language(\n",
    "    language=Language.JS, chunk_size=65, chunk_overlap=0\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "5b70d936-bc31-4ecc-b190-6dd8fffdacb9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Document(page_content='// Function is called, the return value will end up in x'),\n",
       " Document(page_content='let x = myFunction(4, 3);'),\n",
       " Document(page_content='function myFunction(a, b) {'),\n",
       " Document(page_content='// Function returns the product of a and b\\n  return a * b;\\n}')]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "js_splitter.create_documents([javascript_text])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8fab2014-e705-4ade-87ea-d967a9c01593",
   "metadata": {},
   "source": [
    "### PDFs w/ tables\n",
    "\n",
    "Ok now things will get a bit spicier.\n",
    "\n",
    "PDFs are an extremely common data type for language model work. Often they'll contain tables that contain information.\n",
    "\n",
    "This could be financial data, studies, academic papers, etc.\n",
    "\n",
    "Trying to split tables by a character based separator isn't reliable. We need to try out a different method. For a deep dive on this I recommend checking out [Lance Martin's](https://twitter.com/RLanceMartin) [tutorial](https://twitter.com/RLanceMartin/status/1721942636364456336) w/ LangChain.\n",
    "\n",
    "I'll be going through a text based methods. [Mayo](https://twitter.com/mayowaoshin) has also outlined a GPT-4V method which tries to pulls tables via vision rather than text. You can check out [here](https://twitter.com/mayowaoshin/status/1727399231734886633).\n",
    "\n",
    "A very convenient way to do this is with [Unstructured](https://unstructured.io/), a library dedicated to making your data LLM ready."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "ffd078d0-5651-4ab0-b299-b2ed5a4f7cef",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "from unstructured.partition.pdf import partition_pdf\n",
    "from unstructured.staging.base import elements_to_json"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b174a72b-0d43-4440-9ef8-f5f3aed0c651",
   "metadata": {},
   "source": [
    "Let's load up our PDF and then parition it. This is a PDF from a [Salesforce earning report](https://investor.salesforce.com/financials/default.aspx)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "2ae9042d-be6f-411a-8835-bda30ffa0805",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of the model checkpoint at microsoft/table-transformer-structure-recognition were not used when initializing TableTransformerForObjectDetection: ['model.backbone.conv_encoder.model.layer3.0.downsample.1.num_batches_tracked', 'model.backbone.conv_encoder.model.layer4.0.downsample.1.num_batches_tracked', 'model.backbone.conv_encoder.model.layer2.0.downsample.1.num_batches_tracked']\n",
      "- This IS expected if you are initializing TableTransformerForObjectDetection from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
      "- This IS NOT expected if you are initializing TableTransformerForObjectDetection from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"
     ]
    }
   ],
   "source": [
    "filename = \"static/SalesforceFinancial.pdf\"\n",
    "\n",
    "# Extracts the elements from the PDF\n",
    "elements = partition_pdf(\n",
    "    filename=filename,\n",
    "\n",
    "    # Unstructured Helpers\n",
    "    strategy=\"hi_res\", \n",
    "    infer_table_structure=True, \n",
    "    model_name=\"yolox\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f65ad413-80f9-43da-8fb5-3a32373c3686",
   "metadata": {},
   "source": [
    "Let's look at our elements"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "0f5ac388-5b4e-4dcd-bf74-84220c8cdff4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<unstructured.documents.elements.NarrativeText at 0x2bdecbfd0>,\n",
       " <unstructured.documents.elements.NarrativeText at 0x2ad356cd0>,\n",
       " <unstructured.documents.elements.NarrativeText at 0x2ba4e0cd0>,\n",
       " <unstructured.documents.elements.NarrativeText at 0x2af4148d0>,\n",
       " <unstructured.documents.elements.NarrativeText at 0x2ba846c90>,\n",
       " <unstructured.documents.elements.NarrativeText at 0x2ba8450d0>,\n",
       " <unstructured.documents.elements.NarrativeText at 0x2ba844990>,\n",
       " <unstructured.documents.elements.NarrativeText at 0x2ba944490>,\n",
       " <unstructured.documents.elements.Table at 0x2ba947b50>,\n",
       " <unstructured.documents.elements.NarrativeText at 0x2ad3d4f50>,\n",
       " <unstructured.documents.elements.Text at 0x2ba969f50>,\n",
       " <unstructured.documents.elements.Text at 0x177a411d0>]"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "elements"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a081974-002c-4060-9d0c-2d4a5f270044",
   "metadata": {},
   "source": [
    "These are just unstructured objects, we could look at them all but I want to look at the table it parsed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "9c5460db-689d-4e7a-a5bc-a10477c4a61e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'<table><thead><th>Revenue)</th><th>Guidance $7.69 - $7.70 Billion</th><th>Guidance $31.7 - $31.8 Billion</th></thead><tr><td>Y/Y Growth</td><td>~21%</td><td>~20%</td></tr><tr><td>FX Impact?)</td><td>~($200M) y/y FX</td><td>~($600M) y/y FX®</td></tr><tr><td>GAAP operating margin</td><td></td><td>~3.8%</td></tr><tr><td>Non-GAAP operating margin)</td><td></td><td>~20.4%</td></tr><tr><td>GAAP earnings (loss) per share</td><td>($0.03) - ($0.02)</td><td>$0.38 - $0.40</td></tr><tr><td>Non-GAAP earnings per share</td><td>$1.01 - $1.02</td><td>$4.74 - $4.76</td></tr><tr><td>Operating Cash Flow Growth (Y/Y)</td><td></td><td>~21% - 22%</td></tr><tr><td>Current Remaining Performance Obligation Growth (Y/Y)</td><td>~15%</td><td></td></tr></table>'"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "elements[-4].metadata.text_as_html"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c269535-4fe9-44f2-8e0d-8578d706db7c",
   "metadata": {},
   "source": [
    "That table may look messy, but because it's in HTML format, the LLM is able to parse it much more easily than if it was tab or comma separated. You can copy and paste that html into a [html viewer](https://codebeautify.org/htmlviewer) online to see it reconstructed.\n",
    "\n",
    "<div style=\"text-align: center;\">\n",
    "    <img src=\"static/SalesforceFinancialTable.png\" alt=\"image\" style=\"max-width: 800px;\">\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ed1a5fe-245a-4d3c-86aa-03fca86ba5cf",
   "metadata": {},
   "source": [
    "Awesome, Unstructured was able to pull out the tables for us. It's not perfect, but the team is upgrading their toolset all the time.\n",
    "\n",
    "**Important Point:** Later on when we are doing semantic search over our chunks, trying to match on embeddings from the table directly will be difficult. A common practice that developers do is to *summarize* the table after you've extracted it. Then get an embedding of that summary. If the summary embedding matches what you're looking for, then pass the raw table to your LLM.\n",
    "\n",
    "### Multi-Modal (text + images)\n",
    "\n",
    "Next we'll dive into the world of multi-modal text splitting. This is a very active field and best practices are evolving. I'll show you a method that was made popular by [Lance Martin](https://twitter.com/RLanceMartin/status/1713638963255366091) of LangChain. You can check out his source code [here](https://github.com/langchain-ai/langchain/blob/master/cookbook/Semi_structured_and_multi_modal_RAG.ipynb). If you find a method that works better, share it out with the community!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "dee2ed53-96c8-4cf3-89d9-681ff5d4552f",
   "metadata": {},
   "outputs": [],
   "source": [
    "#!pip3 install \"unstructured[all-docs]\"\n",
    "from typing import Any\n",
    "\n",
    "from pydantic import BaseModel\n",
    "from unstructured.partition.pdf import partition_pdf"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea2f20e1-e0fb-4d17-8ec7-faa4276fba23",
   "metadata": {},
   "source": [
    "First, let's go get a PDF to work with. This will be from a visual instruction tuning [paper](https://llava-vl.github.io/).\n",
    "\n",
    "<div style=\"text-align: center;\">\n",
    "    <img src=\"static/VisualInstructionSnapshot.png\" alt=\"image\" style=\"max-width: 800px;\">\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "3f2d1771-7170-48c2-a614-480d7d2167df",
   "metadata": {},
   "outputs": [],
   "source": [
    "filepath = \"static/VisualInstruction.pdf\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "d9240942-2702-45ae-8333-8ac9c3e10343",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Get elements\n",
    "raw_pdf_elements = partition_pdf(\n",
    "    filename=filepath,\n",
    "    \n",
    "    # Using pdf format to find embedded image blocks\n",
    "    extract_images_in_pdf=True,\n",
    "    \n",
    "    # Use layout model (YOLOX) to get bounding boxes (for tables) and find titles\n",
    "    # Titles are any sub-section of the document\n",
    "    infer_table_structure=True,\n",
    "    \n",
    "    # Post processing to aggregate text once we have the title\n",
    "    chunking_strategy=\"by_title\",\n",
    "    # Chunking params to aggregate text blocks\n",
    "    # Attempt to create a new chunk 3800 chars\n",
    "    # Attempt to keep chunks > 2000 chars\n",
    "    # Hard max on chunks\n",
    "    max_characters=4000,\n",
    "    new_after_n_chars=3800,\n",
    "    combine_text_under_n_chars=2000,\n",
    "    image_output_dir_path=\"static/pdfImages/\",\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c45aab5-5f51-4d67-9ea2-17c5489a5c2a",
   "metadata": {},
   "source": [
    "If you head over to `static/pdfImages/` and check out the images that were parsed.\n",
    "\n",
    "But the images don't do anything sitting in a folder, we need to do something with them! Though a bit outside the scope of chunking, let's talk about how to work with these.\n",
    "\n",
    "The common tactics will either use a multi-modal model to generate summaries of the images or use the image itself for your task. Others get embeddings of images (like [CLIP](https://openai.com/research/clip)).\n",
    "\n",
    "Let's generate summaries so you'll be inspired to take this to the next step. We'll use GPT-4V. Check out other models [here](https://platform.openai.com/docs/model)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "fc40dacd-09a0-4ce0-ae8c-87a3910a1408",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from langchain.chat_models import ChatOpenAI\n",
    "from langchain.schema.messages import HumanMessage\n",
    "import os\n",
    "from dotenv import load_dotenv\n",
    "from PIL import Image\n",
    "import base64\n",
    "import io\n",
    "\n",
    "load_dotenv()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fe7b48f-7da2-430f-a0dd-c8e1766854a3",
   "metadata": {},
   "source": [
    "We'll be using gpt-4-vision today"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "59b1b6d2-4d84-41dc-8698-8be52e6f5bd8",
   "metadata": {},
   "outputs": [],
   "source": [
    "llm = ChatOpenAI(model=\"gpt-4-vision-preview\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ea28491-e225-4667-8666-3b0541dbf2b7",
   "metadata": {},
   "source": [
    "I'm creating quick helper function to convert the image from file to base64 so we can pass it to GPT-4V"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "ed1f096a-abd1-4380-af24-6c65074d2420",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Function to convert image to base64\n",
    "def image_to_base64(image_path):\n",
    "    with Image.open(image_path) as image:\n",
    "        buffered = io.BytesIO()\n",
    "        image.save(buffered, format=image.format)\n",
    "        img_str = base64.b64encode(buffered.getvalue())\n",
    "        return img_str.decode('utf-8')\n",
    "\n",
    "image_str = image_to_base64(\"static/pdfImages/figure-15-6.jpg\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "80becf02-83bd-4560-af3a-dece72259296",
   "metadata": {},
   "source": [
    "Then we can go ahead and pass our image to the LLM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "638d7f95-d181-4b4a-aeb0-b40367f0f215",
   "metadata": {},
   "outputs": [],
   "source": [
    "chat = ChatOpenAI(model=\"gpt-4-vision-preview\",\n",
    "                  max_tokens=1024)\n",
    "\n",
    "msg = chat.invoke(\n",
    "    [\n",
    "        HumanMessage(\n",
    "            content=[\n",
    "                {\"type\": \"text\", \"text\" : \"Please give a summary of the image provided. Be descriptive\"},\n",
    "                {\n",
    "                    \"type\": \"image_url\",\n",
    "                    \"image_url\": {\n",
    "                        \"url\": f\"data:image/jpeg;base64,{image_str}\"\n",
    "                    },\n",
    "                },\n",
    "            ]\n",
    "        )\n",
    "    ]\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "67130242-5d72-4304-a705-c9177558a7d4",
   "metadata": {},
   "source": [
    "Then the summary returned is what we will put into our vectordata base. Then when it comes time to do our retrieval process, we'll use these embeddings for semantic search."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "a51c2833-ee05-43b2-9cd2-6710d6e73ee8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'The image shows a baking tray with pieces of fried chicken arranged to roughly mimic the continents on Earth as seen from space. The largest piece in the center is intended to represent Africa and Eurasia, while smaller pieces are meant to symbolize the Americas, Australia, and possibly Antarctica. There is text above the image which says, \"Sometimes I just look at pictures of the earth from space and I marvel at how beautiful it all is.\" This text is likely meant to be humorous, as it juxtaposes the grandeur of Earth from space with a whimsical arrangement of chicken on a baking sheet, suggesting a playful comparison between the two.'"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "msg.content"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b129deb0-7b11-48f6-bc3e-210658e9f8e4",
   "metadata": {},
   "source": [
    "<div style=\"text-align: center;\">\n",
    "    <img src=\"static/pdfImages/figure-15-6.jpg\" alt=\"image\" style=\"max-width: 800px;\"><br>\n",
    "    <span><i>static/pdfImages/figure-15-6.jpg</i></span>\n",
    "</div>\n",
    "\n",
    "Hm, that seems about right!\n",
    "\n",
    "There are a ton of ways to go about this (check out the bonus section for more) so don't take my word for it - try 'em."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ba7cf0e-ec8e-4115-be32-e49aaf5adccc",
   "metadata": {},
   "source": [
    "## Level 4: Semantic Chunking <a id=\"SemanticChunking\"></a>\n",
    "Isn't it weird that we have a global constant for chunk size? Isn't it even weirder that our normal chunking mechanisms don't take into account the actual content?\n",
    "\n",
    "I'm not the only one who thinks so\n",
    "\n",
    "<div style=\"text-align: center;\">\n",
    "    <img src=\"static/SemanticChunkingtweet.png\" style=\"max-width:50%; height:auto;\"><br>\n",
    "    <span><i><a href=\"https://twitter.com/thesephist/status/1724159343237456248?s=46\">Source</a></i></span>\n",
    "</div>\n",
    "\n",
    "There has to be a better way - let's explore and find out.\n",
    "\n",
    "Embeddings represent the semantic meaning of a string. They don't do much on their own, but when compared to embeddings of other texts you can start to infer the relationship between chunks. I want to lean into this property and explore using embeddings to find clusters of semantically similar texts.\n",
    "\n",
    "The hypothesis is that semantically similar chunks should be held together.\n",
    "\n",
    "I tried a few methods:\n",
    "1) **Heirarchical clustering with positional reward** - I wanted to see how heirarchical clustering of sentence embeddings would do. But because I chose to split on sentences, there was an issue with small short sentences after a long one. You know? (like this last sentenence). They could change the meaning of a chunk, so I added a positional reward and clusters were more likely to form if they were sentences next to each other. This ended up being ok, but tuning the parameters was slow and unoptimal.\n",
    "2) **Find break points between sequential sentences** - Next up I tried a walk method. I started at the first sentence, got the embedding, then compared it to sentence #2, then compared #2 and #3 and so on. I was looking for \"break points\" where embedding distance was large. If it was above a threshold, then I considered it the start of a new semantic section. I originally tried taking embeddings of every sentence, but this turned out to be too noisy. So I ended up taking groups of 3 sentences (a window), then got an embedding, then dropped the first sentence, and added the next one. This worked out a bit better.\n",
    "\n",
    "I'll show method #2 here - It's not perfect by any means, but it's a good starting point for an exploration and I'd love to hear about how you think it could be improved.\n",
    "\n",
    "First, let's load up our essay that we'll run through. I'm just doing a single essay here to keep the tokens down.\n",
    "\n",
    "We'll be using Paul Graham's [MIT essay](https://paulgraham.com/mit.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "7c5bb388-0534-4ef5-b5d2-322e945a513b",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('../../data/PGEssays/mit.txt') as file:\n",
    "    essay = file.read()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d18623d-6fc1-4b90-a016-ee79ac28b9ad",
   "metadata": {},
   "source": [
    "Then I want to split the entire essay into 1-sentence chunks. I'm going to split on \".\" \"?\" and \"!\". There are better ways to do this but this is quick and easy for now."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "1dbbfa5a-45a2-4c6e-84f5-d774183717d0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "317 senteneces were found\n"
     ]
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "# Splitting the essay on '.', '?', and '!'\n",
    "single_sentences_list = re.split(r'(?<=[.?!])\\s+', essay)\n",
    "print (f\"{len(single_sentences_list)} senteneces were found\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6340df5c-bae9-4f04-a69a-4263c7e912de",
   "metadata": {},
   "source": [
    "But a list of sentences can be tough to add more data too. I'm going to turn this into a list of dictionaries (`List[dict]`), of which, the sentences will be a key-value. Then we can start to add more data to each sentence."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "b1bc484a-5d6f-4df5-a1ec-7803908fac95",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'sentence': '\\n\\nWant to start a startup?', 'index': 0},\n",
       " {'sentence': 'Get funded by\\nY Combinator.', 'index': 1},\n",
       " {'sentence': 'October 2006(This essay is derived from a talk at MIT.)\\nTill recently graduating seniors had two choices: get a job or go\\nto grad school.',\n",
       "  'index': 2}]"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sentences = [{'sentence': x, 'index' : i} for i, x in enumerate(single_sentences_list)]\n",
    "sentences[:3]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7655fbb4-73a8-43dd-a6b7-565ecf85890a",
   "metadata": {},
   "source": [
    "Great, now that we have our sentences, I want to combine the sentence before and after so that we reduce noise and capture more of the relationships between sequential sentences.\n",
    "\n",
    "Let's create a function so we can use it again. The `buffer_size` is configurable so you can select how big of a window you want. Keep this number in mind for the later steps. I'll just use `buffer_size=1` for now."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "c2c5e5ef-bfbe-4680-9761-0ba7615cc645",
   "metadata": {},
   "outputs": [],
   "source": [
    "def combine_sentences(sentences, buffer_size=1):\n",
    "    # Go through each sentence dict\n",
    "    for i in range(len(sentences)):\n",
    "\n",
    "        # Create a string that will hold the sentences which are joined\n",
    "        combined_sentence = ''\n",
    "\n",
    "        # Add sentences before the current one, based on the buffer size.\n",
    "        for j in range(i - buffer_size, i):\n",
    "            # Check if the index j is not negative (to avoid index out of range like on the first one)\n",
    "            if j >= 0:\n",
    "                # Add the sentence at index j to the combined_sentence string\n",
    "                combined_sentence += sentences[j]['sentence'] + ' '\n",
    "\n",
    "        # Add the current sentence\n",
    "        combined_sentence += sentences[i]['sentence']\n",
    "\n",
    "        # Add sentences after the current one, based on the buffer size\n",
    "        for j in range(i + 1, i + 1 + buffer_size):\n",
    "            # Check if the index j is within the range of the sentences list\n",
    "            if j < len(sentences):\n",
    "                # Add the sentence at index j to the combined_sentence string\n",
    "                combined_sentence += ' ' + sentences[j]['sentence']\n",
    "\n",
    "        # Then add the whole thing to your dict\n",
    "        # Store the combined sentence in the current sentence dict\n",
    "        sentences[i]['combined_sentence'] = combined_sentence\n",
    "\n",
    "    return sentences\n",
    "\n",
    "sentences = combine_sentences(sentences)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "a0c06ebf-af2c-4f14-924d-e0d0cab05f09",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'sentence': '\\n\\nWant to start a startup?',\n",
       "  'index': 0,\n",
       "  'combined_sentence': '\\n\\nWant to start a startup? Get funded by\\nY Combinator.'},\n",
       " {'sentence': 'Get funded by\\nY Combinator.',\n",
       "  'index': 1,\n",
       "  'combined_sentence': '\\n\\nWant to start a startup? Get funded by\\nY Combinator. October 2006(This essay is derived from a talk at MIT.)\\nTill recently graduating seniors had two choices: get a job or go\\nto grad school.'},\n",
       " {'sentence': 'October 2006(This essay is derived from a talk at MIT.)\\nTill recently graduating seniors had two choices: get a job or go\\nto grad school.',\n",
       "  'index': 2,\n",
       "  'combined_sentence': 'Get funded by\\nY Combinator. October 2006(This essay is derived from a talk at MIT.)\\nTill recently graduating seniors had two choices: get a job or go\\nto grad school. I think there will increasingly be a third option:\\nto start your own startup.'}]"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sentences[:3]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0deb04a6-d0ad-4757-af8c-d6d600794357",
   "metadata": {},
   "source": [
    "Check out how the 2nd sentence (index #1) has the first sentence and 3rd sentence in its `combined_sentence` key now.\n",
    "\n",
    "Now I want to get embeddings for the combined sentences, so we can get the distances between the groups of 3 and find breakpoints. I'll use OpenAI's embeddings for this."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "d757106f-d6cd-4504-96f1-4fe1f82e0b7e",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain.embeddings import OpenAIEmbeddings\n",
    "oaiembeds = OpenAIEmbeddings()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d5da984-67dc-43ce-b871-b5e91186767a",
   "metadata": {},
   "source": [
    "Now let's go get our embeddings. We'll do this in batch to make it quicker."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "8a18ba5b-4c9f-42d8-bad0-ca0825715f1b",
   "metadata": {},
   "outputs": [],
   "source": [
    "embeddings = oaiembeds.embed_documents([x['combined_sentence'] for x in sentences])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a2cdc46-ad21-4e8e-a540-548aa3604212",
   "metadata": {},
   "source": [
    "Now we have a list of embeddings, but we need to add them to our list of dicts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "45828ce9-31cf-4810-a5e8-2098201a91dd",
   "metadata": {},
   "outputs": [],
   "source": [
    "for i, sentence in enumerate(sentences):\n",
    "    sentence['combined_sentence_embedding'] = embeddings[i]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7a4f5f3e-f436-4374-be90-a1f5f819e518",
   "metadata": {},
   "source": [
    "Great, now we're getting to the cool part, let's check out the cosine distances between sequential embedding pairs to see where the break points are. We'll add 'distance_to_next' as another key"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "95792785-a966-4b40-a9c4-c76eaed71766",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics.pairwise import cosine_similarity\n",
    "\n",
    "def calculate_cosine_distances(sentences):\n",
    "    distances = []\n",
    "    for i in range(len(sentences) - 1):\n",
    "        embedding_current = sentences[i]['combined_sentence_embedding']\n",
    "        embedding_next = sentences[i + 1]['combined_sentence_embedding']\n",
    "        \n",
    "        # Calculate cosine similarity\n",
    "        similarity = cosine_similarity([embedding_current], [embedding_next])[0][0]\n",
    "        \n",
    "        # Convert to cosine distance\n",
    "        distance = 1 - similarity\n",
    "\n",
    "        # Append cosine distance to the list\n",
    "        distances.append(distance)\n",
    "\n",
    "        # Store distance in the dictionary\n",
    "        sentences[i]['distance_to_next'] = distance\n",
    "\n",
    "    # Optionally handle the last sentence\n",
    "    # sentences[-1]['distance_to_next'] = None  # or a default value\n",
    "\n",
    "    return distances, sentences"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45abeb2e-605b-4556-82ca-b7c99eec742a",
   "metadata": {},
   "source": [
    "Great, now let's pull out the distances from our sentences and then add them as well"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "336bf78a-8109-4fc5-92b3-28aa049b9f99",
   "metadata": {},
   "outputs": [],
   "source": [
    "distances, sentences = calculate_cosine_distances(sentences)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "57eeacef-1594-41ea-a5f9-70f99b8878f3",
   "metadata": {},
   "source": [
    "Let's take a look at what our distances array looks like."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "3c330493-20f9-456e-a6f7-7e16cac4f3d1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.08081114249044896, 0.02726339916925502, 0.04722227403602797]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "distances[:3]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7e960090-8714-4481-adec-33fe39c31bc4",
   "metadata": {},
   "source": [
    "Hm, yep, just a bunch of numbers that aren't fun to look at. Let's plot them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "986e4885-b079-4a4a-9ae4-a1227d6ce1bc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD/iUlEQVR4nOz9e7xlVXUnin/X2nufR72BgiqBklJBAZH3I6ARTeqKHU1C4kX02kKITTppq9XQbV9RA+nYSZkECf6USMxtNA+NtLE1dlQUK+ILFClAeQkqjyoK6kW9z6lzzt57rd8fa881xxxzzLnW2o9z9jk1v36w9tl7rbnmes055nd8xxhRmqYpAgICAgICAgKGGPFcdyAgICAgICAgoAjBYAkICAgICAgYegSDJSAgICAgIGDoEQyWgICAgICAgKFHMFgCAgICAgIChh7BYAkICAgICAgYegSDJSAgICAgIGDoEQyWgICAgICAgKFHfa470C8kSYJnn30WS5cuRRRFc92dgICAgICAgBJI0xQHDhzAscceizh28ygLxmB59tlnsWbNmrnuRkBAQEBAQEAX2LJlC44//njn7wvGYFm6dCmA7ISXLVs2x70JCAgICAgIKIP9+/djzZo1+TzuwoIxWJQbaNmyZcFgCQgICAgImGcoknME0W1AQEBAQEDA0CMYLAEBAQEBAQFDj2CwBAQEBAQEBAw9gsESEBAQEBAQMPQIBktAQEBAQEDA0CMYLAEBAQEBAQFDj2CwBAQEBAQEBAw9gsESEBAQEBAQMPQIBktAQEBAQEDA0CMYLAEBAQEBAQFDj2CwBAQEBAQEBAw9gsESEBAQEBAQMPQIBktAQEBAwNCi2U7w/333Cfx02/657krAHGPBVGsOCAgICFh4+J/fexIf/tpPAQBPffgNc9ybgLlEYFgCAgICAoYWm57eM9ddCBgSBIMlICAgIGBo0Wwnc92FgCFBVwbLzTffjLVr12JsbAwXXHAB7rnnHue2Dz/8MN70pjdh7dq1iKIIN910k7jd1q1b8e///b/HUUcdhfHxcbziFa/Avffe2033AgICAgIWCILBEqBQ2WC57bbbcM011+D666/HfffdhzPOOAOXXHIJduzYIW4/OTmJF7/4xfjwhz+M1atXi9vs2bMHr3zlK9FoNPC1r30NjzzyCD7ykY/giCOOqNq9gICAgIAFhGYrnesuBAwJKotub7zxRlx99dW46qqrAAC33HILvvKVr+DWW2/F+973Pmv78847D+eddx4AiL8DwJ//+Z9jzZo1+NSnPpV/96IXvahq1wICAgICFhimA8MS0EElhmVmZgabNm3CunXrdANxjHXr1uHuu+/uuhNf/vKXce655+Kyyy7DMcccg7POOgt/+7d/691nenoa+/fvN/4LCAgICFhYaLaCwRKQoZLBsmvXLrTbbaxatcr4ftWqVdi2bVvXnXjiiSfwiU98AieddBK+/vWv4w/+4A/wrne9C3/3d3/n3GfDhg1Yvnx5/t+aNWu6Pn5AQEBAwHAiaFgCFIYiSihJEpx99tn4sz/7M5x11ln4vd/7PVx99dW45ZZbnPtce+212LdvX/7fli1bZrHHAQEB8wn/cPdTuOmbj891NwK6QDBYAhQqaVhWrlyJWq2G7du3G99v377dKagtgxe84AU49dRTje9OOeUUfOELX3DuMzo6itHR0a6PGRAQcPjgf3zlUUy3Evz7XzoBK5eEcWM+YSa4hAI6qMSwjIyM4JxzzsHGjRvz75IkwcaNG3HhhRd23YlXvvKVeOyxx4zvHn/8cZxwwgldtxkQEBCgMNNZpYfJb/5hph2ihAIyVI4Suuaaa3DllVfi3HPPxfnnn4+bbroJExMTedTQFVdcgeOOOw4bNmwAkAl1H3nkkfzz1q1b8cADD2DJkiU48cQTAQB/+Id/iIsuugh/9md/hje/+c2455578MlPfhKf/OQn+3WeAQEBhzHSzpyXpGHym28ILqEAhcoGy+WXX46dO3fiuuuuw7Zt23DmmWfi9ttvz4W4mzdvRhxr4ubZZ5/FWWedlf99ww034IYbbsDFF1+MO++8E0AW+vzFL34R1157Lf7kT/4EL3rRi3DTTTfhbW97W4+nFxAQcLgjJUZKEua+eYdgsAQoRGm6MJYc+/fvx/Lly7Fv3z4sW7ZsrrsTEBAwJEiSFC9+/1cBAHf+19dg7crFc9yjgCo48f1fRSvJpqlQ/HBhouz8PRRRQgEBAQGDAl2RBZfQ/IMyVgICgsESEBCwoGG4hILBEhAwbxEMloCAgAUNukAPi/WAgPmLYLAEBAQsaKTEKdQOFktAwLxFMFgCAgIWNFKDYQkGS0DAfEUwWAICAg4bhLDmgID5i2CwBAQELGgkQXQbELAgEAyWgICABQ1qo7SDwRIQMG8RDJaAgIAFDWqiLJA8mYclRmphujrcEZ6AgICABQ1qpIQs7/MLCYnqatSiOexJwDAgGCwBAQELGiHT7fzFDLEwG/UwXR3uCE9AQEDAgkZKWJUk5GGZV5huEYMluIQOe4QnICAgYEGDJo4L9sr8wgwxWOpxcAkd7ggGS0BAwIJGSBw3fzHdas91FwKGCMFgCQgIWNCgJkoIa55foAxLuHUBwWAJCAhY0KBRQiGseX6BalhShHt3uCMYLAELAjd983G87ws/CRNSgAWqWwlhzfMLlGEJ+qOAYLAELAj89Z2/wOd+tAXb90/PdVcChgym6DbMevMJNKw53LqAYLAELAi0O8uvVqhuF8BBRbdhmT6vMN2k73O4d4c7gsESsCCgVs5hFRbAYSaOm7NuBHSBmbaOEgr3LiAYLAELAspQaYdRLYCBuoFClND8AmVYgj4tIBgsAfMedCALGoUADvpIhElvfsHQsMxhPwKGA8FgCZg1fOr7T+I//sO9aPY5VIOSKoFgCeAw8rCEB2RewWRY5rAjAUOBYLAEzBr+5/eexNcf3o5Hn9vf13ZDno0AH0wGbg47chjjH37wNP550zOV95tu07DmcPMOd9TnugMBhw90JE9/B57AsAT4kIYooTnF9v1T+KMvPQQA+O2zjkNcoSbQdJOk5g+37rBHYFgCZg1q4ug3C5IEDUuAB6GW0Nxi/6Fm/rnq1Q8algCKYLAEzBpUAq9BLnLDhBTAEao1zy2SHgzGECUUQBEMloBZw6BCjw2GJeSNC2Cg81wIa559JIbGrNq+M+2Qmj9AIxgsAbMGNeD0mwXpZQUXsPBBn4iwSp99GAZLRceOwbAEp9Bhj2CwBMwiBpONNmhYAnwwEseFZfqsw8yDU21fmuk2vNoBwWAJmDUMyiVkiir72nTAAkB4PuYWPbmEWkF0G6ARDJaAWYMauPrNgoQ8LAF+UI1TeD5mGz2JbltBdBugEQyWgFmDGm767xKSPwcEACGsea5haliqwWBYwq077NGVwXLzzTdj7dq1GBsbwwUXXIB77rnHue3DDz+MN73pTVi7di2iKMJNN93kbfvDH/4woijCe97znm66FjDEGJxLKGhYAtwwUvOH52PW0QsDOh1cQgEElQ2W2267Dddccw2uv/563HfffTjjjDNwySWXYMeOHeL2k5OTePGLX4wPf/jDWL16tbftH/3oR/ibv/kbnH766VW7FTAPMCiXUIgSCvChFw1FQO/ohQGdCS6hAILKBsuNN96Iq6++GldddRVOPfVU3HLLLVi0aBFuvfVWcfvzzjsPf/mXf4m3vOUtGB0ddbZ78OBBvO1tb8Pf/u3f4ogjjqjarYD5gDysuc/NhjwsAR4YeViCz3DWYVzzHgyWcOsCKhksMzMz2LRpE9atW6cbiGOsW7cOd999d08deec734k3vOENRts+TE9PY//+/cZ/AcMNrWHps0uIfA4MSwBH0LDMLXrJw9IKK5AAgkoGy65du9But7Fq1Srj+1WrVmHbtm1dd+Jzn/sc7rvvPmzYsKH0Phs2bMDy5cvz/9asWdP18QNmB8pQ6beOIORhCfAh7TJKaN9kE5MzrUF06bBCL2HlfPvgFjq8MedRQlu2bMG73/1ufOYzn8HY2Fjp/a699lrs27cv/2/Lli0D7GVAP5AMyCVkMM5hPAtg6GbCnGq28dqP3Inf/Pj3B9OpwwhJD6Jbvn14vw9v1KtsvHLlStRqNWzfvt34fvv27YWCWhc2bdqEHTt24Oyzz86/a7fb+M53voOPf/zjmJ6eRq1Ws/YbHR31amIChg9pnum2zwxLEhiWADe6cQntnWxi98QM9k7ODKhXhw/axvtZbV++fZKmiBH1oVcB8xGVGJaRkRGcc8452LhxY/5dkiTYuHEjLrzwwq468Ku/+qt48MEH8cADD+T/nXvuuXjb296GBx54QDRWAuYnBhXWTBGEeQEc1CVU1h2pDJvwOPWOXjQsfKwI9+PwRiWGBQCuueYaXHnllTj33HNx/vnn46abbsLExASuuuoqAMAVV1yB4447LtejzMzM4JFHHsk/b926FQ888ACWLFmCE088EUuXLsVpp51mHGPx4sU46qijrO8D5jfSgbmEAsMS4EY3tWwGleTwcESr3X2UEH+fF/r9eGbPJL724Da85fw1WDrWmOvuDB0qGyyXX345du7cieuuuw7btm3DmWeeidtvvz0X4m7evBlxrImbZ599FmeddVb+9w033IAbbrgBF198Me68887ezyBg3kCtrgaahyVQLAEMRuK4ks8HfY7SNEUUBTdEtzAXFNX25UPFQl+Q3PytX+Cf7tmMxaN1/D8XvHCuuzN0qGywAMD69euxfv168TduhKxdu7ayZiEYMgsTOcMy0Ey3fW06YAGgGwaOszLBXukeLWr8VaRYFrqBwjExnUWlHZxuznFPhhNzHiUUcPhAZ7rtd7v2MQICFNIuGLjgZuwf2gZbVXHfw8wlNKgxcqEgGCwBswb1Dg6yWnOYXAJsVGfgeinYF2Ci3UMUH9+8KkMz3zAbgQnzGcFgCZg1aNHt4DLdBnslgMNIzV86SkjeP6A6emFY+Fix0OfxPDotPHQigsESMCsw6/2ETLcBswfT+Cj7fIRnql/op8Gy0Cfy4BLyIxgsAbOCXtJzF4GWGwkvegAHneRKRwmF56hvaBvutYqiW1ZKaKHfFp0NfKGfaXcIBkvArIC+fv0Paw6r4QA3zGev3D7hmeof+suw9KNHw4tBRVIuFASDJWBWMFvC2PCiB3B0k5qfruwX+iQ5aPQiuj3cXEJpcAl5EQyWgFmBGXrc77ZDHpYAN7qp1hyihPoHg2GpuK9drbn3/gwztIZlgZ9olwgGS8CswKjn0nfRLf0cXvQAE73qp8Iz1Rt6cgkdZrWE1OmWjWY73BAMloBZgZk5dHB5WBY6ZRxQHd2FNXc/yQaYaPfwfh5uLiEd1jzHHRlSBIMlYFYw0CihAbYdMP9B2b2yE153odABEtqk+GGvLqGF/n4H0a0fwWAJwKGZNu55cvdAsysO0iUUMt0G+GAwLN1oWMIj1RPaPbyfFsOywJ1C6vyCS0hGMFgC8FfffBxv/pu78ZUHnxvYMQbqEiKfw8IkgKOb58NwM/a3O4cd+qlhWeg3Q0WnBXtFRjBYArBt3xQAYMf+qYEdY5BGBR3UApUawGFEkZV8ProJhQ6Q0VseFvPvhX4nQpSQH8FgCZiVl2SQibgWepRQmqb40L8+gn/8wdNz3ZX5iW7ysBiMYJ/7c5ihn3lYFuL7TTGoemsLBfW57kDA3EO/JIM/BtB//6ypYelr00OB+zbvwf/83pMAgH//SyfMcW/mHwz9VMnnw8zDsgAfqlnAU7smsGdypifNmlWteYHfCvXctZOCDQ9TBIMlYHZC6Qa4YjXdTQtvRDsw1ZrrLsxrdKOfCqLb3vGaG+4EAKw7ZVX+XdVryRc3C/1WhGrNfgSXUEC+Apo1l9AAqzUvxBe9Fkdz3YV5Dfq4lV3tpwM0sA83PPrc/vxzSM3vhzq7hbjw6geCwTIP0GwnmGq2B9a+GsMHORjQlvvtElroeViowbLQB+xBoJuw91D8sH+YIf6NKlcyTdPD0CWU/RtcQjKCwTIP8H9/4i5c/JffwnRrMEbLbBTcSgdIsS/0PCy1SBssg8yVs1DRXVizvH9Adcy09Oxb5f2UNl2Ar7eBNLiEvAgGyzzAg1v3Yfv+aTx/cGYg7c9OlJB9vH5hkFl0hwGUYWktxBMcMIzno6vEceGa9wJqsFS5lBITu9AF0CGs2Y9gsAw50jQlNOFgHmLtEhpI81nbAy1+uLDzsMTBYOkR1Rm4oGHpH2YM/0b5iyndq4X++KvEcWWj2Q43BINlyDEbCaxmRZk+QBZkoSf5oi6hVkXn9kNb9+EzP3z6sGYJDNFtN2HNh++l6wvMPCzl96PXXdnsC/05DqJbP0JY85DDrMMxmGPMSh4W43gDZFgW4HseR90zLB/80kN4YMtenHbscpyxZkWfezY/0F1YM/28AB+qOUKVS0mvey2OkLQXukMoaFiKEBiWIQddnQzOJTS7Yc39dwnpz2Ve9H2HmvjMD5/GnonBaIL6DTpMtypyxfsPNQEc3rlcunFHhlpCg0GViZjeK6XjWujzeD4WhyghEcFgGXLMhvgvdwkNpPUMgxTGVo0S+uwPN+MDX3wIn7rrqf52ZECgp9Ss6BJqdka+w7n6azfPXlUjOMCE65pVeffptvU49ra7UJDrFRf4eXaLYLAMOQyGZWAGi/p3cC/JIF1CVcNW909lrINiH4YdvbBT7bZasR2+A2B3xQ8Xtptx0HC94lWcOvQe5BqWXjo1DxAy3foRDJYhB6UGB+US0n7TgTQPwJwo+p84rhrDMt8GBdrLVkWuuNm57iF/S4Zuih/Ol2nyGw9vw+9++kd4/uD0XHfFeZ2raVj058PFJTQbesL5jGCwDDlmI1ohZ1hm6S3p92EMgWSJxufboEANq2ZFDYsyVA5nipmeetnrMB+jhP7xh5vxbz/dge/9fNdcd8X5blXKwyJpWOaJ8dgt1LseFhgygsEy5Gj34A4ofYy8ltBAmgcw2NDjqvR9kp/v/BgUjAm34k1SYdCH8wBIJ7myt7yqm3EY0OwkaKsqzB4EnAxLFy6hOAKiTqTcQhejzoZ7fj4jGCxDjkG6UhRyl9AAVy+DTO5W1RjSg0JfuzEw0H5WFd22gkuoK4PPjBKaH9dOjQ/DPNl1I7qNowgqsH++3Ituod3Vc9yRIUUwWIYcbYOaHqzodpbyxvV9QK2ah0UNevNGw0L6WTUPS2uesUmDQDc5VUwDu989GgyUMTYMt9qtYSnfuSRnWCJEeeK4nrs21FDndzgvMHwIBsuQw8zDMphjzEYelkFGXVRNDJbOgoHWT9DrVZXuDy6h7gpvUiNlvqzq20NknDo1LBXaUOcTRYDmWBY2Qi0hP7oyWG6++WasXbsWY2NjuOCCC3DPPfc4t3344Yfxpje9CWvXrkUURbjpppusbTZs2IDzzjsPS5cuxTHHHINLL70Ujz32WDddW3CgA+fgUvMPtn1gNjPdlnEJza9BwUgcV2G5nySDr0M1H0DPvOx1mI+iW/1cz3FH0B+GRW1ai6M8rHm+vLPdIriE/KhssNx222245pprcP311+O+++7DGWecgUsuuQQ7duwQt5+cnMSLX/xifPjDH8bq1avFbb797W/jne98J37wgx/gjjvuQLPZxOte9zpMTExU7d6Cw2wU9ktnYaCjA1W/J8+qicGGaWAvA3p+VRgW6j5a6AO9F124hEzWrs/9GRDUszEM99qZh6WShoW6hA63sOYFfqJdonItoRtvvBFXX301rrrqKgDALbfcgq985Su49dZb8b73vc/a/rzzzsN5550HAOLvAHD77bcbf3/605/GMcccg02bNuHVr3511S4uKBhRQoPOdDtQg4Uer79tVzXqtGZnfgwKhsFS4eLNhjtxPqAqAwewyKJ54hIapvxC/cl0q11Cebu9dGoeIGS69aMSwzIzM4NNmzZh3bp1uoE4xrp163D33Xf3rVP79u0DABx55JHObaanp7F//37jv4WIxFglD+gYPU7guydm8PMdB7zbDFJ0W7Xt+baKof2sUq2Zuo8O5wHQfD7K7WMKdfvanYFhNtITlIU7D0v2w20/2oy3fPJu7Jt0Z5uWRbdDcHIDxGyw3fMZlQyWXbt2od1uY9WqVcb3q1atwrZt2/rSoSRJ8J73vAevfOUrcdpppzm327BhA5YvX57/t2bNmr4cf9jQrsgedINeNR1XffpHuOSm72LHganCY/RynHJtF28/3wYF2s1mhU5T99HhnJq/m7Dm2ajh1W8Ml+jWoWHp/Pv/fuFB/OCJ3fj4t37maSP7N9OwRMZ3CxXDxJINI4YuSuid73wnHnroIXzuc5/zbnfttddi3759+X9btmyZpR7OLtqzoEPQjEN3+z+79xDaSYod+90pwQ2XUJ/dE1XDVueb6LZ7hqW8bmjv5AwefGZf9c7NA1CXTjep+efHU6IXN8PwWJcV3e7z1PPSDAt1Cw3ByQ0QQSTvRyUNy8qVK1Gr1bB9+3bj++3btzsFtVWwfv16/Ou//iu+853v4Pjjj/duOzo6itHR0Z6POeyYjVpCvWpYytQiqprcrWIHxOO4kLvA+tuLwaFLDYvhEirY7w9vewDfemwnvv6eV+Nlq5dW7uIwwzSWy4puA8PSE0qKbn32t3p8I5o4bghObZCYbwEBs41KDMvIyAjOOeccbNy4Mf8uSRJs3LgRF154YdedSNMU69evxxe/+EX827/9G170ohd13dZCwyBdKbzdbgfmMmHRg3UJyccp6st8mYhMhqU7l1CRhuW5fZk7b9t+t1tvvqKbHEDzMUpouBLHyd/zr8uMGTQ1/xCc2mDRo55woaNylNA111yDK6+8Eueeey7OP/983HTTTZiYmMijhq644gocd9xx2LBhA4BMqPvII4/kn7du3YoHHngAS5YswYknngggcwN99rOfxb/8y79g6dKluR5m+fLlGB8f78uJzle0uxhsq0KtZLo1JKq6WAYaJVSmD8rAmieRM2aU0GBcQnlG3AW4tKNn1FXxwz73Z1AYJobF1Qf+ve+5VNvWiOh2IT6fFOqcg0tIRmWD5fLLL8fOnTtx3XXXYdu2bTjzzDNx++2350LczZs3I441cfPss8/irLPOyv++4YYbcMMNN+Diiy/GnXfeCQD4xCc+AQB4zWteYxzrU5/6FH7nd36nahcXFJIKk07Xx+iRhtTFBN3bDNIl1H0elvkxKHTLsLSJcVM00M+3gpBVYLIl1Y3q+TJJDpM7wa1hMf/2GZDqPAyXUB/6NswIxQ/9qGywAJnWZP369eJvyghRWLt2beEgEegvN2ZDdNvrBK52891HQ/jY5xG12zwswzCwlwHtZhWGpVnBJdQeosmu3+gmaWEaGJae4OoC75vvfc1dQjEOm8RxIdOtH0MXJRRgwnQJDcpgyf7ttvUyK7tB5rWoyt7MNw0L7WezEsNS3pAbpsmu36BnVD4Py+Dfu35DufWG4bku2wXftVXnYVRrHoJzGyR0xObCPs9uEQyWIYcZJTSYY6Q9TuBlytqnA5wAqudhGUw/BgXazSpuQUPDUsSwLGANCz+lKgUysz/6259BoYxrdrZQ2iXkGdPUb7VI52EZglMbKHINyzwZm2YbwWAZcswmw9KtCFVnynVvQ3+SJt2ZVoInd3VXO8pcQZeYjDp7zJchwazWXEF026Zhzf5thylLar/BDZQyRt98zsMyDIZ4WdFtmSihiORhGYJTGyjU6c2XgIDZRjBYhhyzUfywdw1LMUNj5rWwf7/y1nvw2hvuxNcfrp4xuWplXR0VVflQfUGznWC61S69PdX/VMp0W0H/NN+EyL2gijCbfx5mzJbROd1q48CUO+Gbrw82w1JCw0KKCc2Xuk7dYr65q2cbwWAZciQVaP1ej9F1lFBq/iuhSGdy9xPPAwD+8QdPVz7+fNKwJEmKX/qzjTjvf3yzNFtCr2sllxAV3R7OGhZ2SuXqTVUzgocBOg/LYDv85lvuxqv/4ls4NOMzuh0uIfa3342c/VuLdbXmhcgAKqRpmp9zcAnJCAbLkMOMEhrMMfS70d0ByqzODZeQZzu6miqLqvqYuQwdPDDVwvMTM9jf+bcMTNFtl8UPD2ODpYobQm9Tbfu5Rpqms/ZcP7rtAPZMNrHzgLsUh+txq5KHRf0WRRHiw6D4obnwmrt+DDOCwTLkmF2XUPV96aqgzGqJf+aox9UNFjNnRvH2efHDOfAT02tU1jij16vrTLdlDZYF6DvnZ15Ow0IYlj73ZxAos7DpVx4nNQ75QuydY0FXLiGiYSnfzXmH+Vhwc7YRDJYhB11QD1x020X7ZQ2RspqAuCuDpRrDoraYi5UzPWZZMon67avVEirvThwmwWa/YbuEKu4zDy5JkTj/X3/yLE67/uv4t59ut36rilZusHiMDYctU4XtUj9lYc0L32IxWOhAsYgIBsuQgw5Ew5jptqyxUDY0t9aVS0jujwtzmZyJnnpZhoUO/tWqNVfJdJv9uwDtFUuoWYapHGQY/iBAnxGpu/c8uRuHmm1senpPj8chxrOH7XOGNbO/SzEsMUnNPw/uRbeomp7hcEQwWIYcszFw9iJCLZsQjk4avsPUumBYqha304ny5pZhKXu96VZVGBY6GRS6hBZw/oduRLdGWHOJS/L8wWl8+cfPVor+6ieKjNN+RRD1uoCqwnap9o3ihwvv8cxRdeF1OCIYLEOO2RDdlsmj4t63OsPi264LgoVNLuVXz3Oxiunmfhq1hLqNEioIOV/IolsrD0sFFg4o54W46Zs/w7v+6X7864+fq9q9vsBgWKTf+8Qq0ue3Gw1LtTws2b/xYVJLqGp6hsMRwWAZclRZJXeLXnJwpCWNhbIGSzcMS1UqdS5zjtB7WJrRIpsNwiU0yLIJwwB+mctc9qpRQrs7EV/PT7gjZwaJIg2LMl57FXOWHY+ceVg87VnbSqLbBTyTd5u+4HBCMFiGHINWjpeN8nGhrLFA3S++ObcrDYujP87t8/Mtf4xdB6fxz5uewVSzN8qfMiRlD0/PqUotIVN0696uKyNqHoGfUZVsyEA5A0eFm1e5P/0ENU6l/vZLVE0NI6/o1hklxNiuEkZPTFLzL+R5fD4mK5xtdFWtOWD20B5wLSGT+ai+f9mXrKzbpvcoofLbV5mcP7bxZ/i7u59GkqR483lrKvdRoU1Zjy40LO0KccfUJVSmKm7W/sIbKPllLnOOZZlD3maVsPN+IimIJuxXnaF2yVB51yXju/jeAWUcZS4htV13JzA508KikeGe7spGXB7OCAzLkMMQuQ3gKTYGjK4MFvkzR1nxcM9RQhXqxFRZxeyezFKR7z1ULtmbC2a6/HL7dK1hKUnfz4ZOai7B73Mpl1BFJkyH+s5NIpsil1C7i2e+6Di+JIYuI69KXafcJRT3Vkvoth9txmnXfx3f6KLsx2wiHfBYvxAQDJYhh5ki3Pz8d3c9hR9v2dtT+5KvPk1TPLR1HyZnWl33z9qOfPYNUt0wLFUjqbpJHKcmsF5ZLroCL1q5P/jMPmx6ercxSFfKdEu29Rk6hptqAQ6U/IwqFz8scUlUm3PlEkoKjE7FzPV6e5OSRrA702257bLfKMPSfbXmHz+zD0kKPLR1Xxd7zx7mW3bluUAwWIYcLpHbT57Zh+u//DCu+5eHempfcunc8+RuvPFj38MHv1TcdumXrOQEUOviiaz6ouuw5vLoVxSNqRdxb5ckKd72//0A/8/f/tCo2VKpllBi31vXscpsN29RITJF2qbM9opZqSKK7ieKjM5+Pb/0ON1oWKoYj2pBEUe95WFR96RK4dC5AI8SWoiLh14x3E69ANNgIQ/wwemM/TgwVcyC+CBpWLbuPQQAeG7vVKX+eSdgzwRA2+jGJVQ1HLBMdWkONTj3Wh6hrBHRTlPs79zbCcJ0VVnBl43oMHNrlG5+3oCfedVJr5RLqK1cQnMzyRhuPeEeqvvaT4O7TNI3jiouIa1h6c0lpO7JsOuz7JBvoNZFmoeFjMCwDDlck7H6vtcBUopCyl/wCu6VrC3fdvozb5e6ObpzCenPgyp+2Es2YKkdwD/4uiaGKhoJuto/nBkWfkpVhNnZ/mUYFuUSmhuLr4gRUi6hfj6/rSTFz3ccwJbdk/aGjuPY98LdIR3W3JtLSBmTc3VvyqLKtTlcERiWIYcZJWQbB72uGqQEWVXK1Jd1x9BfeJfpQNKd6Lac0cS3r3Lp+kapt/0Ti4Jh4FGDpduw5pIMy0KkoatUCJb2qaJhmasoIfO5sn9XP/d6f+kz9fzBaay78X4AwFMffoOxnTsPS/l7oX6KiEuom/6rY/Q6Vu471MSysXqedbffCAZLMQLDMuRwrZzKVEwt1759rNz90ceVqG87Oth2lzhOPk7R9lUGhEFoWHzX15UCfRBRQkWT3XwHP6XKqflLrOtzhmWOooSK3sM8rLnH7lE27sldE6X6Q1GF7VJt1GJdd6ub168fOXLueXI3zvqTb+Cmb/6s6zaK0E002+GGYLAMOUzftG289MywCL7vducFr7oSLe0SYhsaVG1Xqfnla1S0fZUBoX+iRTpjlDPwTIalyzwsJY3JYffzdwNrkixxCQ3WrsT27Vx0OzfXry2MDdLv/QxrnmnRZHVmu+7U/Pxvz3PZ2ZiKbrup/6UZlu6ttce27UeSAo8+t7/rNorQDRN4uCEYLEMOYzIRjIN+alg4w1KuLo/clrAl2c78pSkYZVPNNj77w83Ytq9Y+EubK+cSUtum+OdNz+CCP/tmYchjXhywxxVqWYbFCB8l17Vaplvd2bJ5WBaiS8iq1lyGYSmozcOhRbdzHyUkhzWXZ019oM/KtGGwmNu5LnE3LiFa1bwrhqUP7jrNynbdRCGCS6gYwWAZcrjyK+QMS48rOukF7NYl5Kd3zb/pxGiKQ7N/v/KT5/D+Lz6Im775eGEfquZhoQzLt366A9v3T+OeJ3f796lgxPlQOtSY3uuSrh3fsXyPSdVMwfMN/DKXEpMbqfmLt1fXeqY1NxewUHSb9uf5pc/fDHlv+TV1MSE221XM/EWkWnM3z2fOfvXwcM9G/TEpSijARDBYhhwGqyIwEb36zKXJvopIzfD1pykOTrdwYKopHMf8m7ZNXULq+32Hmsa/3j4YackLNzcYlrIDUb9CI4vCT6XtzNwXXUYJeRkW/Xm2V3U7Dkxh46Pbew4X94FP0lXF5Grzn27bj8/+cLPY11x0O1eZbg2WzP17PzVY1CVkTbaOy1ClcrY6VC2OEPcgum32gf2ajWrmlrssWCwWgsEy5HBNJv2LErI/K+q0aoKtVjvFJX/1Hbzur75jaS1sWl5/bgrZX1W7ZVwgVVfDlGEpa5z1K6zZLH7obszFGnVb/NCf6da9Uh40rv+Xh/GOv7sXP3ji+YEdo4rQU29j36fr/uVhvP+LD+L+LXus7VtDqGHZOzmDDV99FI9vP9A3lxC9LjMel1BZ0a0/cVz2WxbW3Nm/fFetY/Ryb/Qip+smShyDj5HBYOEIYc1DDlMQaX8/CA1LlTTe9CU71GznSecONdtYStLW+ga0pkAtq5/LCOWqRwlpo6isFqh/K1R/Vd18O2YI8n6UO5bMznEYeo1ZHiN3HpgGAOya6K1Gkw/8lKoWP1Sb7++wffuFZI06Nf/cMyzqGf3XnzyHv/nOE9h1cGYgYflehsVxmEqiW8El1I3FohZPfXEJDdBisa/NwA41bxEYliGHS/1PWYJeXiIp30SVxHH00D5BqT2gyayBFreVN8iqajDUJkmakrpCs2Ww6M9lNSxlC85xGIaO51gut+NsoD0LE0E3YkbpvchX2UJfm3Od6Vbo70QnG/ahZquryLii48wI2jMNB8PSpeg2yr/LvvzjCmVJdGHKXsZJ8/iDQGBYihEMliGHMw8LXYH38CLSd0K9MFUmZ9MlVD60gnaZ7seTupViFCoyLJTeVQNwWYaldw1LOYbFJbStloelrIalmsHXT/TruvpQVl9BYbwXMN8Hqa/a7TBHDItg9CvjttVOdeRfV04VDXrtumFYqrjn8jwsUZQzLCmyCMJP3/UU/v7up3OjzIc8gquHe9OvNBL+Y8jHDNAIBsuQwzVx0YGjl5dIYid0WHOZ/unPvggYv0vIPseuGZYK26fEJVQ0OLSZIdUtStcSctz3dpJaKzHnsUoyLEURJoOE6uNsameqGuL8GZGeAWUczlW1ZilbsepLO0n7ljiOGsHTLV2UM2XtujUs5Z/fXMMSm7WEXPXVivrc28KuPwyVDyFKqBjBYBlySFQvwBmWXlYOdpvdMiy+5FWWAUO6TCOdVBOc7fH3Qf7s3l4PPrx+knOffMDvlWEpx2b4jIiyA293mW5nd5SkxuOgUCUyRe9j/+Ezbuc6SkhKKtkk2g1tcPfIsFCXUDcMi+c3+1jZv5Ehuk1RdYGSu4R6YFj6VTzSB2tRFywWC8FgGXK4awmVm4yKIPnqmxUy3dKXzJe8ir+Mhi6jZbsu1HlX17CU2J4MPu2Shki/BnwzUqEc68HvQ9loh7IuoTllWNj9HgT4GVWJJMs+m99J10hPinPPsHCXUDshz3mP3WuXdAm5rjHVjRVBtUmrNSepvECZarbxs+0HxHZahGnqFvliboDvR9EiLyAYLEMPV8ZTQwPSB6oza9N8sUu5hBwTq5X7wrOf5CbhEUs+8MXwgakmpppt5/b6WOVdT+0+uS7KMyzyPoA2RGZaCb7yk+fw/MFpsY3Sots51LDkBuosTgRljCPTkOfPJJtYklQb+0OQh4WnBGglSaWCpv7j6PObatnMqILrMGla/hlTfa1Fkc52ywwedV4f+OJD+L/+6jvY9LSdALIf7rpuCqZWP4b5dyBYbHRlsNx8881Yu3YtxsbGcMEFF+Cee+5xbvvwww/jTW96E9auXYsoinDTTTf13ObhBFclXZ7/pOv2hZBWnem22kq0Jbh2pO3432ZYs+pL+RUrvS4z7QSv+cs78Vt/fVdhn2lYc9Hqi4dbdwvDOCsphHUxLF976Dm887P34SN3yNmATZeQu09zWa05f9YGODrbE0GZZ4p8VvslcnvUSBmGPCwSUzqIKLdDM3pRUJYdSGELf13PnHoujWrNMMcWte8zeyYBAFt2HxL63A+Gxd/XfiAwLMWobLDcdtttuOaaa3D99dfjvvvuwxlnnIFLLrkEO3bsELefnJzEi1/8Ynz4wx/G6tWr+9Lm4QS3RkRv05uGxc2wVC1+SAdrKxqBTxpUwyJoKMoaErwtAHh+YgaPO+hheow0pS6oAoNFFYbsWcNCooQ82/miwNQE+fzBLHfJ7oNyDpPSAt8KeV6mmm085anSWxWzkUGUt1xOmG1/dumqzKzNc2+wSBoWn2C40nHIfZpq+QwWef/MJWR+52I31ddZWLOu1uxz10lt9SPT7exECbFrGCgWC5UNlhtvvBFXX301rrrqKpx66qm45ZZbsGjRItx6663i9ueddx7+8i//Em95y1swOjralzYPJ5guIcf3fdKwqGaq1RLSn70aFk8BOimFfJUBQgrVLJPfIWNYOscpmDB9+oUqKJ2HxbNd2UiqtrHydw/WLlejhDd94i685oY78aOn/LWXymI2wpq7odrpSjplzwh/VrotndBP+FxC7SStxJr6jyOH5Rcxqnqn8tluqYYFkf7OWMSxcUJ6zrUguvtz71eUoA/2NRzcseYrKhksMzMz2LRpE9atW6cbiGOsW7cOd999d1cd6LbN6elp7N+/3/hvIYIaKU6XUE8aFrt9nem2DLvhYIBYn3y0fNNIQGUODOVEt/L3rv5TTYK6vkVFJNVAOKgBn8Pn8tOVgf2TkBn94zlWSSYGAB5+NnvP/vd9z3i3K4t+TaR+MIOvoqtTf9dpjRuQbfe9mi34RLettnYJ9XqZXXavxQa47RXr2rqSIarNslpCmmEx8i7lGqjsb2m86EfZhNRx7wEzvLs3uBd1ARkqGSy7du1Cu93GqlWrjO9XrVqFbdu2ddWBbtvcsGEDli9fnv+3Zs2aro4/7HAaBORZ7luUUOffKrkxXAxL0arW5RJq5zqBCgyLywfu2FcPPvbq2YWclek5j4X7GlGYE5A8wBetHMuGNbtC532YbvWHSdBMWl+ak4/B2q5a/JCHXvO+0us8M8gT8SAxnivFsGgjmzOX/TgORVmdUJLYfKjr2VTfR6yWkHRvfK7dVj9cQo72P3HnL/CKP/4G7t+8p+u282OUZJ4OZ8zbKKFrr70W+/bty//bsmXLXHdpIHCFMtNBt5eVg/TyVxFCmv3whDn6XEIG62AOrGUGGdcY7DJCDA1LScMod130zLCUYzOkSAirL/m/8jVqGWJmj8HShXuxX1qNfjFXPviePRekcH+ul1BolXS9DRKSO5aWC+hbWH6B+4b3gUNmWPxt0rDmlLmEuNaNszVpqt1h/RDd8r5venoPZloJHnq2d4a/iJUOqFj8cOXKlajVati+fbvx/fbt252C2kG1OTo66tTELCSYdV7I94PQsLAVe5kXxsmwsO38LiF7Eq8icnWv5lzb6/3KHkdHCfVvwPcKYem9ZptRbQLgNli7iUgqO6HN9IkG18zVAA0Wa+VabX8+KVoGC3O9JUmKOI4wm/CJbvuah6VgEeD6m37Ps+IWMaFGtebUbJvfk0EJoukiR/6+9+e3tA7oMEYlhmVkZATnnHMONm7cmH+XJAk2btyICy+8sKsODKLNhQRjpS2sLIDeqE5TXNg5Tqe9qr5+38TnK+wlhTWXzY+SbSt/XzS40iRWZRmWngd8j1En9THbx7y/6n4XRdh0k4el7BjZN4alwrPWLXjLlRmWglpC/O+5yMUisQ46Sqh/eVhchqUlYXHqx2zGyzV+5QwL1bDAjDLi7y8fL8q6RYvgEuf3g71RCMUPi1GJYQGAa665BldeeSXOPfdcnH/++bjpppswMTGBq666CgBwxRVX4LjjjsOGDRsAZKLaRx55JP+8detWPPDAA1iyZAlOPPHEUm0eziiq1sy3qQrRJdT2T4Tm/rLhUZw4Tn+W9ssHohITo6ufRSu3JHVPQq62eh2YJPeXBFO7xNswB88yGhal11FF5IxjefQyLsz0ScNSNtNwL7BWxWWMYCE/EXcNKViTZDvFaOWRtTeY91oxLPp9Thx97+U4FEXvO4V1/RzvuHo2aJSQxbAwQ8ISqBsMS+9hzXbEXvms4MXHkI8ZoFH5tbr88suxc+dOXHfdddi2bRvOPPNM3H777blodvPmzYhjTdw8++yzOOuss/K/b7jhBtxwww24+OKLceedd5Zq83CGK5TZ0I70YrAIK/4qbAJ9p3wZU30uIYMJYMfu17mZfbGvne84VaJoiuAqYGkd07iujGFRBmWBEcX3aycp6jXbYHGVf/ChX+LSfmmDfLBXrsX7SHoxLvBU6LZ0QhHaSYp3f+5+nHH8Clz96hd7t/XVEvKl0K+KsgyLezs7NX+VPCzZIoMexzye9cxXyDHkg3Zdmt/3M4+QrbXquckFh67WAevXr8f69evF35QRorB27dpSNKSvzcMZ5kCkv6fzxaBEt1Vrrvj0Ga5cIoA5+fGVTE8aFuf3dj98A05Z3UkZmMn13KATuD0hmtVnXdeIPxftNBVf+Cp5WBToJHhopo3xkVr+9xM7D+KoxaNYvqjhbcOsll3uuN2AN121+KFmVuRnha/c++US+vmOg/jXnzyHHz65u9BgkTJWK4ZlxpNCvypc184qV9D584w1K/CSlYsxOdPG7Q9vE1Pzu1xCavwxRLe8+CFnWDzuuVaSOlnGInCjVUEzr5WbtFDW6DucMW+jhA4XuMS1riibqkiFyapaplv9uWW4dvhx3H8bosW8MGHntxLn5tqkjECQ5zQp2r7XucgXrmwc0+N7b7L74zRY+CTiuk4eV54LahL85iPbcdoffx23/WgzgMxY+ZWPfBtn/487Ctvw5e3pJyx3RRmDBfZ7oa4ff658DMtTuybE+jZloPOoFD90lFngGpbpLu6v+zjlFgfq77VHLcKNl5+Jl61emh2/8z8K14LL1LBk3ynXJt9GnT5/5ov0RmVBC6Yafe8jw2IZQ8ElZCEYLEMO1wTnC3vttv28fk8Fl1Bp0a1nP7MGkcnuJGnxZCZlugXcE7Tkxipd16ePA75XwyL46XUbZfOwyGJdq09k97IDr5oMf7J1H9pJige27AMA3PPkbqNvPvRLEFkEi2GpaIhz0S1/VqxVPTEQXnPDnXjTJ+7uqpyBuhVl3KLSezwIl1CRLoz/rcSy6t8ktbd1Z2rWbeg4IZkhdUXMcfarWxczT2iZf19i/CgL27DuuckFh2CwDDlc+gmD2eiDb5Z+blVYkbmimOwBzL3SmWnZbdDfi87P9XMphiWf9Mulru9nWLOvKZ/WJQ9rLnCblWVYXOUffNspN17KJvFahXDefhqCPliTTEVD3HYJmdtaDItwgJ/vOFh8UIa2w0AStxVKOUjMRa+XuSzDoow85X2JDIaEt1neJZQkjjws+btg67Youh0rXfeCC+B7Ab8MQXRrIxgsQw4Xg+HTOHTbvhTiW9S26RKSjausbc9+Ap0traJccBkRTtEt+ayO7XP19Eu4x9vyNeU7/zwTcdu+X3Qfa2Jw6Q9KGmRUD9BsmQnfVBuSqNeFbjLsdgNLdFuVYWGGij0JclG0/TA16tWH2mqh/fZzJQmje9awlHYJZf8qZkQ/Fam1bXHiuCjXnaQw31XOejUTf9vdJvbjRqtCP6PcfDq/gAzBYOkTvvuznfibb/+iLwmEKEy6nn4uz0D4IGlYfEUMOdyiW3YcT0l5o5ZQZ0czksc/yDgZlhKDazvXsJRjWHodQ8oKeH33l+cuEdORC+dTlAK9qE/UIJ3JQ987++UMS/khpZ+GoA+85TIrVyM/Ef+7YGLR4cT6HozUujBYCjRKFNJiQQrj9Y1PeydnsGP/lPc4btaS/63ZEQB5Ir0kKe+iU19nBkv2OU2ZvogxHDwNQr8YliJ2rR8MC28hECw2ZjlbwMLF9f/yMJ7YNYHXnnwMXrpqad/adbmETB1GLzUyzL/TNC09gWW/036497NpYGqw2PtVyTPjrCUkfJ+mJvOgKV13+/0NaybuNs92vtwoPKxZMk4kd0CZfDW+R4m2SevUAPpa10gERlFEhsESDpRicR/XuUtqfva5r+zcHx2xK9GONCowTwrc3eHf1h4bqjwDAHDmn2RC6Qf/+HVYOiZHeJVJFUD7ELP7nyIt1AApqPOOI5BaQub7a1Vr9uiJgO4jKrlhnh8/Nyq7atZASBxXjMCw9AkTMy0AwORMvyp3ZnBGCVGNRx9STuu/ZRGsCy4mxOcC4n+bNYiE37vUsEiGjMtw8hl9ZSN7ykBK8CUe07i/zC/PXAXSYEmPo+aMMgyLb3KkLiFVoVZtrtqgGpayyfiA/lDqLtjsXvE+3GA0DXNzW9ckOdXUY0G9C4ZFZ6ctvj7SYqGKS4hWHN6691Cp4/jazfUnndP2im6d1ZpVG5phSVKHvshhvBe578rCmTguVfeo9+e3G63V4YZgsPQJ6p3rt1XsZFX6pmEx/7YZFv/+5sTqnoz9LiF74uoLwyKMTXZYYuLcNt/GUU36aw8+hx0H/BS63adyxg/9yTUZuISG/DjKHVHGReYbeOl1mGomWeVdNpDXicFSlL6/n/ltfLDEjFU1LPBfI3791XlThqWbCc0laJfAr2WapqJLyHWdD0y18s9j9Zq4DT+Or91cw9KxNFwuHW+biW4jJg1IrK4rD4utL+qSYcnHJfP7lkdHVvkYQcNSiGCw9Ak8HLdfcDEs9DBUaDbVbOPbj+80Vnc+SFlAq0wkLibEnmTd+xkalvw6yu1KcP0qhRDzbXPa3bPykiarOx/biT/4zH04/083unYT0U2UkCspl9bf2A2pVWscaSOilEvI0yc+AR5qti0hao24Poqy4frKD/QTfIIs5xLiBgDZv8Cl0RIMFum6PvjMPnz8337mLHPgcreK2zK3niS6BtzPHDVYfEcqm6RR/a2eBurScU36rjZrtPghOxbPw8I1LL5U/VXAXZ8K/dSwuBYmc4GpZht/9KWH8K2f7pizPkgIBkufUCWdfRW48nGYwlE94H3mh5tx5a334NbvPym2N82q7EpiubbAeJTqn1fD4p40zOKH5oodsAchXx+k7zd87VFc8GcbsfPAdKlJ2/eb+vzTbQfy77bsnvT2z+hTSePAn4fFHCSle6QG5notzgWPPYtu2f4TMy09kJOcGQpFtVtmi2FRTWvDrXgfoz8pnyTNbe3EfkrDot81afL589t/ihu+8Ti+/4tdYh+qsKg80qssE6Kw/1CTHEvftz0TM/jlv/g3/NlXH/X2w7Ug4XlY0tS+FoXFDyPN1PD97Uy3/rwr3buE0Dm+PI4NIg/LXBIsn/nhZvzDD57GVZ/+0dx1QkAwWPqEKor+Su3ScdNhsNCXUqn8d+yfttp65Nn9OP2Pv4G/uuNxsZ3sGKZWoeh0nNE+QrsUrv5zTUT2e9FKXf5etXHnT3dix4FpPPLcfucK03ffpBXdCpJ2/l9/8py3fxTdRAnxvhVVqAX0yrIeR7mupJzo1mOwMANkcrpthXu6noei485GlFB+HbpwCfl0THbobPb3VJMY4sIxD05nrMYhh+6tSiQgZ8lc7FYZlxA91r/+5Fls2X0In/zOE9ZxXMcHzBwqAHUJVWFY0GmDJo0z98+ZFce74GK/Dkw1jWd1y+5J/HzHAbjAQ9sV+holxNueQ4alKFpsrhAMlj6BMwPP7JnEjXc8jl0HbcOhUruOQd1VsE4zPfbD/uDWvZhuJbhv8578O4nK7UeUEOeVeSsuDYvEVBVqWBzf80qu7SRxT9olmQX1kdL4X/7xs97+GcfxXCMK3/nz7J6+sOZaHOWRO0XRGPy4HHxinpxpE4ZFGSz696KKzlWes16gnrUiw03aB8gMnFTI/aFgF6fsMCzELStdV5eQkx5X+iyBX8umy83kuCX7pzTDQg2IFYtG8s/7Jpul87CoP3mUWEr+X+q71GYUEYYGzJWYpsy1yA0UW4T71K4JnPOhb+J9X3gw//5Nn7gLv/Hx73uMR7n9fjLrRaz0bGK0i7xBs4Hh7NU8BB+wP/39p/D/2/gzfP7eZ/rSLuBmW1rsBc62tR92nTtD/8Y3S1GNqi+dh8VamejPsoal/OqyKHFcHkHQtld3eX88bidpYqV9fvS5/XhmTzm3UNlr62d8zG1EhqXzXaOES6hs2DZnuiaJS0iafKswLLPhElIGS+WwZvgZL7vgXvb3dEFKfJ/Bme3jPobVFjM6Xdu73pUDxGChfR0hE9cvdh10XjsXg6rsFRolxLvmKhaZkPtGRbt8HHS5lwHZJfTQs/sw007wyHP7AWTXf8eBaUzOtI3rQCHp4ej3/Ukcx/+eQ4OloYXXc2k4cQSDpU/gA/ZEx1KfmG4596nSLuCeWCSGRZor1KqrJTAa+d9tU6xX5PJ1MQEuEZ70txHWLDBExdl2/QM+jSCokrPlqV0T+M//dD8e3rrf6ss0W8FSSt0HqUid3HefwWJPdFZui849pgxLmSKR1RkWGH2h+9OSC+JxZ9klpDQsZcZfO6zZ/Wy7VvVlDZYybsqiyavNIvTKCHkpXC4hOlb8YsfB0gwLd+dQl5C9ePEb0rEhuk2ZweB/jizRbTvF3smmsa2kobP64nhHdJRhPwwW/lz13GTXoAwLH+vmEsFg6RP4gK3zAvT2ILtyZLhWX3oQtI+r/Nq+gZD7vqvkYfGKbj37mYnjzH+B7vOw8BVsK/EwLMIPX3pgK/7Pj5/FZ+7ZTPqd/csnhLIDVmkNi5dh6ZyXh4VS/WkQDYszNX9J1wNfvU7OtPL7KFWtLRbdUo2Hd9OeYLmEStwrcxXP3j2eh8WhYaGi225cQlVYRq6xcV37cqJb+R4+sWuiFBsECBqW/PtiDRDvaxTBybBwY7IwrDlJsa9zrhJbWkZUbL4vne+E6/qTZ/biTZ+4q3S17mFKHEfTE5RdjM0GgsHSB1AhGWcIeslCm7VDP8sTi7lqt1ffCoph8dVw4QNdoUuoxAsufeFyCYlRQgXX0OkSUm0l+l64c7bY3x/qaBAmCUumtqtq2EnH8e3hzbyb2m25IlVqNWKwOO5V6SghiWFR+YcEQ7nIYPHlNuknVMvULVEEn2jcynTL87AkKnGczRxSVHEJFUbKsefKbQTI+++nDItRgoEYLDsPethMeYGSRwkpdkuoJeR6v/Ow5jgiUUY22+XKBZW1ze+VbbAYZQ0cj6yLYdO1yOzr8tUHt2HT03vwLw+U07jxS+t6J+7bvAf3Ex3iIEANP5ebbC4QDJY+QDIq1He9MiymkSJ/L1G40mHLMCz8ha/iEqLguS98/lkp+yvtVlGypyJKPa/I7NGwSPdJsShTxkq5syrrlmHxJNej8P0mGaWu0OdGHJeIErLblsC1BhNUdJv3Sf9elIfFcE0O0GBRl6koHw2F4RYtcAm587DYz410DOfzm5a/PgZzl7gZFreGxTbKAfMePbFzwvkuugpM5onj8u3s83WHYGf/xpHOzZ+mpqGfpKkxRrnuhf47wd7JGQDEJZTYCya7L/S9Vf/q8US6LOr+HyzJUNhjpL3NxHQLv/3Xd+G3/vouK0VFP0HdQAd7lDX0E8Fg6QMkYaxkvffetn0cfgy/6NbWsPCXoipz4I5wMP+2DRiyEhcSbFXRNxRF/uT3IrFXd7q/boNlmq6UO/vb18nbRd2nku4Xr+hWWJnzFbiasLLVqb9NnwibwmJYpltOZjHrg/+i9CtbcxFyl1Ctuyghyw3B3W+Oa28+N/YxfO8q70MRy8jvYWWXEI0SolW5STtPPz/paVf+W7lyokhfe8tgcbFBuYZFV31O2Tm0E+YaLRTdag1LvqgsUYSTXn6p6Kh0XdWkf6DkhF+kjQKAPR1jCyh+v3oBvc/KmP3z23+KP7/9p3PKuITih32AtPqik2RPbTs1LPJL5ssHoyZg32qRazOKNSyOfnsodf67scIRJr5uM93ya5GJbuVtvQyLEJ5a9TopGO44z3a+U5aMOlcNlVocIWJGhdUnD1NDYeVhmWlbZQJchmjRcWfDX1+LyhsshoaFFezj84Qr9wddpUrvY1FIrCuNQdG2mYbFZZzK+7uihOjENdNO8LQjSaJLVG/nYbEXL0VJ7qKI1hIyRbfcJWS7gHjIeYq9Hg1LGZeXNLb7FjxlAy/sApLuZ2bQoOObMlg+cecvAABXvXKtszjmoBEYlj5ACnnTk0pvGhauN+G1WwAmXlSTk/CwqxfTV4CvsobF+YIX/G1oWOzBgDbbc5SQMlzabg2Lj5GaEqI9uhXdckHj73zqHnzkG4+V6k+daVF8AzU1WJT/v5To1usSMn+bFDLd0t2rZLodLMOS/Rt3mek2Sf1GvjtKyJ/pNjeoS7xDRckTOcvrKijour8HHBoWbvhsft5lsJh/a9GtcglRhsTc1t3X7N9apFnCNGWu8aRAdCtU0t5nRQkVP4cGg5XY3/kWiGVdKmVcQrMVWWcyLGaSvRrLrTObCAZLHyBF7wwiSshsX95GGUjiBKxEt4ILS8E2WPz9c/1eVPxQGyYsUV0XDEtRptuc+k38GpavPvgc3vVP92OyU3lbXa8ZYaVsuYSSFFt2TxbmY6GD8y92TODOx3biMz/cbG0nrdjqNS08BPwaB3X9aKbbUqJbz7woMSw+l1CVWkKDXDjSa8GP695Hfy5yCXFtj8p3ZGS6lVbL5B0Q+1DyvgC20em89o5Tpy4hV5QQ4GFD2PfqL+UK0gaHnVrAHZnTMXpibfAAtjFpam54fyWGZabTvr1NKQG0xLB4xtvyGpbi61LWpdyriH2GaVjoceNgsMxvSJkWfdE6ldp2PMTGhC5lihXGK7WS8K2o+YqqXwwLHyg1HeswyCr474v6ZoY1uwZH4JZv/wJf/vGz+OGTWRiilMtC7c5/m24n+PWPfw+/8fHvO1eMtC+Anuik7aUJrsaiXHzREervuIzBYrB47vstRglZLiH9e6VqzbPBsFRwCdEHVopMobAL7tkMi7xa7vxWYlVfyLAwJrYoVLjZTvCnX3kE33l8JwBfHpZy757LJZQXP3SEJWd98T+X3CXEjQfTNZrizsd24OZv/RxSTaV2YudhaQkML4dYv6iAmVFGo6RhabYTfGHTM9i69xA5hrmN1BcpSSjHPU/uxtkfugNfun+r+HsZzJBzOzjVMo4Vx8FgmdeQDIC+aVgcD7GLjlTji/Qwd8OwFBlcrgmOMyp8K9WsdbwuJj539Etq/eubrBR1q8SS0irVxbBMTLewd7KJ3RMzhguJQ3KDSNdYuuw8n4qPHs5DQiPiEiqxOvZpWDiTkOVhMdtw6R96OW6vUM9ivVbFJUT2T7kA1ty2jIZFdAnlxp7cB1/9IqstNgYVuVk+d89m/O13n8QVt96DNE2dUUIzJYWdLncGdwll58GNCEdfE92GGWXkNibbSYr//n8ewV9+/TH8dNsBy8g+ON3K74u6vvRdLsOwcCOd/67gY1g+/f2n8F8+/2P8yg13Wu3qc3O3KW2v8Oa/uRt7Jpt4z20PiL+XgaFhmW4ZC+BaMFjmN6S8Jrnh0McoIYAaLPo7cxJMOv1wW/x0tVakYSmaR1yDvzWAOc6DDyg6rNm/epHacn3fJsfynY8yVPIoD8HwcGlY6HmUZVjUfZMma9klFBt98Ic1Z//GcVQYzusrqWBsV4JhqZKHZbYZFp3xt/hYhmYBqThhKVg5cIQoIR+979ZV6c9F0YbcPVFU/HDrXl3cbnKmLT6XQPE95O0qOIsfQlgkFTBMtSjS1ZrZvWgnJsPSbCe5gHhypm0Zk89P6NpuqTAGFS1+AG1IFWm/1BhxqNm2xoTv/jyr0G0ateyYQpuGQLjg1tACrVXBo4To+QUNyzyHlB9FZwDtXnTrSzblZFhS+zsFzbDY/VWoKrot8j/nf7Pf1bnxgVWKnKCDzv+6dwt+5SN34sldE6SP/r5pl1DiNVhUojh1DSSXkBRZwM/DNVlwiloZs9IjIl13nqnVK7qlDEvuEhK7ZU7OPoZFeDa48US7UVT8kGsRBgXVdJXih1xf481d1PlNjeOlM90K77LRb/qOV3gPk9TNSqpmfJlMKeNR1iVk52HJ/lXPXm5wpMLEXNDX2Mp0a54rHwunCZPM+7/rwIyxLWCeY5l3RGLPpXFwmjQ2MW3mTKkLLIXLrUZh6OmE358lLqYz16ywfi8LM0qoaRxrDu2VYLD0A6Lotg8uIXHlnZr/ZsegVrc9cSioCaeduF9QTgEXdb9s1I3tn83+5QadpM+g/f3ag8/hiZ0TuOsXu6y2+SDQTsxwVJ+GBdDhy+o6SatL1RyfjOm2zrwS7Os8oZ1gsUj3vs6iXMz8E3zVn7VZr+laQuWihMRNAOhJUBXESxLyPIouIf/DU5T/otlO8NDWfT2zL3a15jL7mJ99ESHqWo93Csap+zkl5O+h4GxpkqR4aOs+8p76r4/UloK7lpB5LQA7k6mZ/K/ctefdU244XfxQH99l8HEYGhboe2cYD0lq9LdFDJZWkljXjTIsOnFc8XWmXc7vW8F+plvFvMayweI+Zt6mUHeN4odPPp9/HicFDKuCjmcHp1vGsYJLaJ5DKkroYzrKQtQ2JP6XJU8V7bHOfer2qhlcnS6hhG8nrx6kyd0XqjgjsB98QtLfm5N0kYZFMSxqkJYGfXU9uLuIXjf1sv98x0H8w91P5Ss410SXpO5MoRScIfCt+nOXUBQV1tApOzGq8xglrik7D4vevtdqzX/z7V/gjR/7Hv55U28Vz3OXUBWGhbFO3IChUM/wWGeCaEoMi8SWsvv4ic75/tfP/7jTB3KMgveQ/z7jyIKqzqtR0+/KfstgsZ/lItjvd/avMjToqtw2WPzGFWVYgNQyHrg7i2r1uNG886BmWFQ7zRK6ENNI0sfy7UfvAWdYGjV76rWuYYERJL2rP/jF7vxzL4tlahhlLiH9W3AJzXNIoWaSf7QqpJdATNAl1MJwrVhpH2k/+Tau38v0EfAnRcv2k4+n2qTNGj7qTgVgafVqMSyp7d/2vcN8APO5dvhv9B6oz3/6lUfwR//yML7X8Vfbbhv9mfdL6icPy3XpDug2tZi6hEoMxj6XUGf/0YY2WDQjZh4XKGGweFgLIMusCgBP756wfqsC1XI9NjVAZfZRn30Mi7r2Yx3mSa7WbB9DvavqHbv5Wz8HgLz2TCKMKxSPbTuAh5/dJ/7uqrCrNquTCXM/cwl1FyXE/9bGBkDysKSwBgfXxEoNzdjhEmqntuiWtssFvc8fnDb2zbYrI7q135EiQ3/GYClMo7AMSyFrWPzv6o9IocVeFstGWPOUGdYcXELzHD6XUC8PjTjICQaLJL6UHuZpkWExt+lXHhaXCC//nbkQ6AvMaV+pGJuRlKvzLx8EuCAv+1x8P3waFtWO2masM3nTwUkNgKrImvrXzgnhHiil54a7NFxuM0A/B3EUQS2mXS4hM5GguInR39F6Le8Hfx7pfSusJVS0QlWJ+5rlJk0XdD4PZfAV78MZFno7XKLbsZEOwyKwcL48LNL95MeRwnPf/Dd347Jb7sZUs2217zJY1PlQ455Waub9KJv+3c7Smv2bRwk5wpKB4iR3ERXdpra7zhmu304tQe8uYrBoPZo9ftp9sftV5EqVssUqiC4h6/4Lbbb99alUyDbQT4alydiuwLDMa4guocS23qtCdgmp4+jv6DHUQyrnYbFdE5bvu6DaKYczrNlBEfPjqveibhgs7lWTFMFD2QR+jDYb9Mu8w0UGS5Lq35QbwMgO2jKfASn/jeqPAv9Nuq4+l5CrSi1NHOfM91FgOPD+5hoWg2ExJ19AXwcXihLHqSibXou85QYtmTSLYE5QRaLbzrNQV89Cp99Nf6ZbLgq3DCGm1aCYbrWx71ATkzPtLMqH3X+f4DlJzfdtz8SM8bsUJbRk1F/FxUoclxsb6PxLDA4rrNlhcCR6ktR9t8cGnyHOr4tZQVtt59eFqOPyz8Z+okvI1IFQSAwLP7T0zNB3SrLzmobLqPu5x4gSmtZRQnOpXwGCwdIXSIm3XKumKqAvDw9NdWlYfJEHebVmgRFS4Kudbl1C1svnqN6s+j5CKGruEjI0LEJBQk0dm48zF922234NS34Mj4ZF9U/9Np7rFojfXyWEyw0Wm9kC2D30TFYKNebS8GW6Vde1VGr+AteMgjqPkVzDQp73zn7dhjX7KPVeGZYkfz6qiG7JO83+drFhim3TUULuiVByy/Lnw/UOAHY6eZthcRt5SZoaLqG9XoYlO4dFI34BJydiVBO8WrPEsBRFNMUkcVwK87okaeo0MlpJYuUOMvvceT9b/udQHUd/7vxLmi4S3fJcLPUSGpaiyKOi33uRI3BjK09EOZf+IASDpS+QqEHXIFSpXfIA82ylLro4X7V5rPM0lScYYJAuIfn3XH9CRIBcHCuJAKdEl5B5DCtHQ5KUcgfkLI6HqvYaLCxBn8RsZf1xD5TSda0zl4Y3rFmtTkul5tef/S6hjnHZYVho0i5ZW6Ubfm7fIbzvCz/BT7ftJ8ctGHw795gWn+wKbHVYlWGxXULmtk0uulUuIdJvPndIiwbrHfGwOrxgnxXt52VYUmOlvK+ES6iIYbEZVTXBofOvriXEt20lWTTYGz/2XXz3ZzutNqjRnabMeGDvOD+PfEFUdxsIzQKmJDuOvV+R9sXUsLhdQlLuqew4dj98AuE0TY3nopfFMjUi01S7tILBsgAgPcw6xr/7h0YNWFEkMCykWWniEh92+jALEwwguIS6ZFj413wrzgTVDYYFlitHIY/AEES3klFUJUooP0YrK5Lo17CYk5SpYTGNVSk6K2vHPbj4ooTaaRad4xXdqsE+QrHotrRLSGlY4rw9HjFBD0Gvyb888Cw+96Mt+Ie7n86/Mw0l9wq1Zw1L599KoluDNZVdAgqaYWEuIRbJtunpPfjxlr3GPr7++MLW+cTE6X+ffihNzXdl/yG36DZnWEZNhoXPW64FCtewILXf02Y7xcZHd+Chrfvx1Qefs9qMIs3Q2En8PNqsdqojuASDJbsOKQuvF5sSGTbfPUwSM0LJ0rCQBZr07vBjKsy03QYLr0bfk4aFjX3KqJ2XLqGbb74Za9euxdjYGC644ALcc8893u0///nP4+STT8bY2Bhe8YpX4Ktf/arx+8GDB7F+/Xocf/zxGB8fx6mnnopbbrmlm67NCSRKXT0rPWlY8kknInVQst9Sx2CWGyIFFKXLsOEPatHg7vq5qFQ6dwk1qIaFTIR0G0AW3eYGC+tDkprGZNkXuNlOvGLDJNH9UG4Ag2FhjEquYbF0JvSzbHBQUKOVnwq/35Rh4VWeOYp88QpWHhYykRflYVEsiVEQ0Kgy7n5ee9awqMmzUrVmsj/8tYTU9RtneqZpJrp80yfuwm/e/H1Mt9pGG2WEnnwbnsOG39tpj5HHDXmbYbGf5cUjJsMywuhM63m0GBb9PXcPt9qJdpsKxoPhEmLGYztNnaxpO0m1vsiRk4QK6FV74nbMgFX7KljjKLN8fAyLek7KaHt8Yc1Vy6r4wPuvnpE5tleqGyy33XYbrrnmGlx//fW47777cMYZZ+CSSy7Bjh07xO3vuusuvPWtb8U73vEO3H///bj00ktx6aWX4qGHHsq3ueaaa3D77bfjH//xH/Hoo4/iPe95D9avX48vf/nL3Z9Zn/CmT9yFi//yW/jFzoPObeiDoR7mPD9FDw9NQgZavkp26Q6kkFcFiQXwUc1AHzUs7G8eIVG3NCzEIKMGSz6J0UlW7iv37bfaSWkNi2+FSidQUXTb+awGS61h4QOK21CQDq9WN2nqF/DSv+txRIomFt8r3+OqmAPqEsoHb4HlagqDqytpoXS+04JeqRtQtkn1GwAOzbTxu5/+ET7LqmVLWVsTT1/VuY2yiLFpIw+HnrD2HWqKY4bVb4/Lj6+0+X3zRQllhrzegedhkRhN7hIarXODhS9Qsn91RIl2CXEDo9nWRoOkB4wj6hIyxwZufPHz4DlyOJK0XIkI8x2xx1i+n1RrjIIWEFSuQ9vos/vBXYHGMXm5kD4yLPvnK8Ny44034uqrr8ZVV12VMyGLFi3CrbfeKm7/0Y9+FK9//evx3ve+F6eccgo+9KEP4eyzz8bHP/7xfJu77roLV155JV7zmtdg7dq1+L3f+z2cccYZhczNbGDL7kk8/fyk148uxujnfs4eDJZEDbQRmazUilZv1xJWqpJ/Uyryxd91LrotSsPgngTlAYz2h25Xi/Uqqp3a9UIUxDo/qTom60OSWhVVy9yOZjuxEuhRHCLPwrjkElKDb+fYef4bgcKVPgOyoahoZGlF/eMte3HVp+7JNSJyHhb5fMq4owCtzRip0Sgh/RylqSmAlPzpbeO++pmd3CXUJ4ZFiZZVX+7bvAf/9tMd+Lu7njK2t4xtzrA4jMMxkumWug15mwdZIq4ykSmWgVrEsBSIbunzZoU1t+17uJgZLCN10wCQ3LEAjRJS29lu2WY7yd8fyT1JyZwUsK6dOyFiQu6NPNUlaSoa1hyiS8jDkvEJ36rYTDZXY5nlVvK8E1k/2G/W2N29oa/uu0owqJ6neaVhmZmZwaZNm7Bu3TrdQBxj3bp1uPvuu8V97r77bmN7ALjkkkuM7S+66CJ8+ctfxtatW5GmKb71rW/h8ccfx+te9zpnX6anp7F//37jv0GgxoSOEiRq0JfArSzMSI/Od4JBYiZ6kg2WdiInY7NXBsUvjfl7ue9dLyMNXXQJ61rCAEoNSC7gVWinUlhz8f2gA6gE6tbg2U0BPXCoCV4XnbTvSX4O/DehnzRKiP/+z5uewbce24kvd5KOmXlY/AxLGXcUQPKwdM7ZFkebBqFkILvcQLLo1r7X3UC1zHVgeSkGqzyEbWx7XUK5TkKzbdxgoIuK/VNmqvNuords0S03WDwalsR83hTdryKBJA0LN1gshsV6hrJ/1TtNXdr8bJvtJL+GUo4onoeFR+y4XZ0lXUIl7oXEQvqi3LjBwqOE6L65S4gbypLBMgCG5QNffBDv/tz9xvF42gY1L8TziWHZtWsX2u02Vq1aZXy/atUqbNu2Tdxn27Zthdt/7GMfw6mnnorjjz8eIyMjeP3rX4+bb74Zr371q5192bBhA5YvX57/t2bNmiqnUhpFIaGAvCrQSvIeDBbiB877ITAjUrXRIp+qepH5eVV1CZXNw8K3yjOjEoalRs7RZFjUC61XraZLSDa+eARBZrSVNFg8A76a6OpxlLMedJWm7keuYelEZ3HhpK+WjvTY0DwiXA+jKGfV7yqZbsscGyAalppyCdk6C1eUUC5EplWthfeGYlpw/3UDK3FcavavyGBLUvN9s/QkbBXfbCeWG4tei/2HmqImwu63fQwF0xi0++R3CZkGr2JYlFEi6ZCWMNGt7RLifddjF0BFs/ZvrSQVWUj1DMdR5AyL9uVhaROXEO+v7rdZILEM25W7+9t2XxUsg2WaF5i0jYMyixbaLt+e6+7KLJb3TzXxmR9uxr888Cx2HJjO21XP2zgTks9lWn5gSKKEPvaxj+EHP/gBvvzlL2PTpk34yEc+gne+85345je/6dzn2muvxb59+/L/tmzZMpC+aRre7xNW4K6OfuRhiVlYH+BefbmYE57ES6cFN49ZOazZcVns1QL/W/Uz+5sK61waFvpCGkm52L8K0gRawl7BTCv1DvjKYGnU4vwFNidnJSA0tSuu0ONsG9vY4sgZFmGCmuz0SbVjMCyxfTyjHyWoaIDkYSGJ4ww9QSJPdvTYxrPqGfCBPoY1d8BLG9CqvhT26ZuGb5oCOw9M44mOrs0ufmg/P/Ra7J9qlorM8jFwxS4h816ZZ2O2PTGTXV+lU5FS8y/iotsiDUvn3zwPC3EJqU1VG82WFrlLi69swabbTZnx4M7Doq8LZVhoTpkkYUyJi2ERxlivS4iLbq2K2GQsa3WnYSlyQ5WJUKXVnXd3EgjSvo+xtA1zrWHxB9czrFy5ErVaDdu3bze+3759O1avXi3us3r1au/2hw4dwvvf/3588YtfxBve8AYAwOmnn44HHngAN9xwg+VOUhgdHcXo6GiV7ncFvep3b2MaD9m/fBXXDWiUUNU8LHwAmW7LFHWR6Faa5P7tp9tx/BGL8NJVS93ugyTFNbc9gFOPXYb/8MsvNjJfUlqXTqwul5DqA32RZnIalbi6hBeeG3Nl7McihkVpWEbqcT4gU1p5hjMsDpeQj2GQrjt1abgmWX6sehwhTQtEt6VdQuZqldP7PoalaJD3rSZ7TxzXeY+YS2impMGSCM/jW//2B9i8exI/ev+6/FovHcuG08mZtu0SMhiWFsvD4rgvjncckA1kCponSIr8kyb5xR0WpW24N7PPRaJbVx4WNb2Z73b23UgtxlQzQdPFsKR631y8y+9F6mdY8vpXRHNzxKIRTM4cyo/nYy14X+hnb5RQEcNC+uyKEvKF+vPjA91FCVGDRWU8pu2MM5fQHBMs1RiWkZERnHPOOdi4cWP+XZIk2LhxIy688EJxnwsvvNDYHgDuuOOOfPtms4lms4mYZSmt1WpIehAN9QtFdDrgdwn1xrDoPqjLI0VjSLoA29UjT4i2weKfvB7aug+/++l78bq/+o54HIVvP74D//v+rfgfX3k062/n+zoTgOarqNhMjiexD9TtIvl9pVwIvJ1+alhG6nHOXpguIdNomGnJz4I3D4vQz1rNbbDwdiq5hAQXiIQ8D0vDFt2q9um+dHDNmR/BuM76ax4rTdP+aVg6h+GZbvPMzwXXnieOaycptu45hJlWgucnpvP9j1g8AiBzsXAji75XPErInfvD3Sf6fEqLImUwSWJTV2SNCl02xeAuDYvpInI9Q7lIM7c3dFizEu4224lmJYWxNI5pplterdmjYWnr/DT0OhyxuGH0u2rxQykpaFHxyQO8IrbBFptjmS/Ro6/4IT9mGTnCs3un8s+7JzsMC2mHp22YVwwLkIUgX3nllTj33HNx/vnn46abbsLExASuuuoqAMAVV1yB4447Dhs2bAAAvPvd78bFF1+Mj3zkI3jDG96Az33uc7j33nvxyU9+EgCwbNkyXHzxxXjve9+L8fFxnHDCCfj2t7+Nv//7v8eNN97Yx1PtDkWCRcB8sHiq8p6ihAjDQsP6eH9EhoWNYdziL5uHhZ82D+92XZZDTd6OnkCbJEU+jYQyXUJ2X+nArCYxenh+Ltzw4SJRF4oYFjUZjNTi/AX252ExXUMKPtGe1M86mXBdhqKuW5T9HccRaklVDYu/7VEVJZSYOTCSxM2w5O+DQ7fjM5ynO4n8ui26plrikXY8I7GrLylguSGom0+d05Edg2W6lVihwoaGZappXDeXrsowtj36J8l9qSbBcUFsmqYyk6BYFCMPS0sZLGY7tkuIH0MvRACSmj/R247m1a1T0ainLiFp/+xv9zvdThIxrPmIRSOIow5zlrDEcY7hgbM66tj8OwU1fqxY1MDeySYOTrcw1Wzn/aDbq4KGlAl0scFmuQfzN5thKV7wywxLdmBah2xYNCyVDZbLL78cO3fuxHXXXYdt27bhzDPPxO23354Lazdv3mywJRdddBE++9nP4oMf/CDe//7346STTsKXvvQlnHbaafk2n/vc53DttdfibW97G3bv3o0TTjgBf/qnf4rf//3f78Mp9oYyDItcrRmF+xWBRglx15RrpepmTmSDpSg1P+8/HQClEEUFXo00nzQswyv7nqaQ5yv3nKkgfZNCAa3ES2wl2WynTgOLYqbtznILaGNppB7nhqRpsKSdSc00WHwallKiW+oScoys3NVXiyIktWoGS+o4ddW2lDgOQCcDr95eyvvj1F5Zq8U2+ztxRnoUgRrL9FhSbS1A1hIYDAu5t3SFvmJ8JHd57jowbbTBw4iruoR84nj6rKqJWCc2tK+Zk2ERNCxq8rISxxVoWLSxYUYJUeNPtTFDEsdJbhbqEpKS+LkYqixKSBksur/LxxuIoygX8BqsRQWXkDdKqNOpY5ePox5H2HVwBg9t3Ydz1x5pba+MS3Ve9TjCDOTnooyGZbxRw6FmuyTDog2W5ydMhiVjkNX4lrU11y6hygYLAKxfvx7r168Xf7vzzjut7y677DJcdtllzvZWr16NT33qU910ZeCoMVeMhCKXULerw1zfEZvl2QF3BIEkbgTcIW9FVjp/acaJYO1Qs+10H1DqMEvYZn7fTs1+Ug0LnyCUdT9juITMVYnaz+h7woofJuVEt81WYpRx58hdQoRhoeHgrba5OiqjYXEVL6SgGWt96cjp/rU4QpL6I90sQ6qgbVN0q3/n19ssKmdPSPT80xTGe8Kf1+lmLwZL9m/OlnaazjUs3Pjjf7IJnqYIoCxeox5hyWgdB6Za2HnQNFhMhqVVyiVkutu4i8k0kBUatRjTrSQXpcsGi3xMxaLoMSbNQ76Lwpr5I6P+9opua4phSSAJ06nRQzPdmjlR3EZGxn51DDfiwlqxqJEtRDvvUZlMtzxZHcDGfcd4O1KPcc4JR+DrD2/Hpqf3yAZLvvjK/vZVV/fpbXKDZSQzWNTcs/PgNI5ZOiaeF3UJ7clFtzqoQI3JygCba5fQUEQJDTP0IOee6STxoC9LZVlIieOkFOgzrQS//rHv4cs/fpYYTGZbdlIhux3A1rDw95em5D5Iyo5zUOpQUfqAzmirmSh9jjR0W2JYaN+a7dSYOLK+2hNv1xqWlns7iWFpGRNIYrh/lDHjSp8v/SZqWGIdTuyie7kWoBbbzw6Ha3XMoQZ2pV+QGBbJUMt+U/1zn7M0iCv0kjxOtWqJbpVxV3D+fJLktLwWOMdYNpbpIzjDQq/FvkNNUROhkC9OyCXgBoaR94f0p9F5v1QfRQ2L4z3INSzE6FWbFbqEHM+vJLrVGhY9FnCWgRo2mUtIXsxwY5Ki2aYMCzFYxkd0qYCknIZFelelnDEK3GABgHuf3qPbM56njnu781WDjZFGux7jSj1jNFrtf37vSZz/pxvxlZ88BwnP7iNRQpPNTt/1/ckZls75zKvEcYcjSrmE2EoRYAxBlwaLxD64Mtk+uHUf3vVP9ztT7pfVsFguIQ9dPjHddvrfqSU+1Wznk4ZLixPHrN4IaVbSsKhzMlb4rCs8P0Wr3V/RbaMWyS4h4jsH9MvuSxznKl5IYTAsLhqcGUe00m1ZhsUX+QWYDIstuiUTqREllBj/0vb0cfVn/rz2IrzlLiHVRVeUkK1hYedliImTnKGpxxGWjWcGyw7uEqJhzcxg4cerCffLz7Doz+ocp1vm5GWcTyqPZ4tzDYu9QChOzQ/x77z4oTo2tO6JtjE5Y4bl0/YowwJ2L/iihMLUsOhjrVjUMLSJPpfQ7okZS0+iPvtqYSmWYrQe45wTMlblvqf3iDlcdACBHu9V3zh81ZjV+6ZY8HaS4vHtBwAAj5Eq6XT/bfskhsVmkOet6PZwQxnRrTH4CAZDtwyLdgnZxQ+LIguKNCxqYCjSsPhW3xPTLW/hMQXKsPCcINQoo1mFizQsQDaJ0ZWeVHCRF1Es5RIq0LDQsOY8SsgwUFKmA5AnRgo76Z29jaFhcbSlwjjNPCzu0HweAZN9J/cxdwnVXC4h8x4YobdMDEz7mO/vYDGkv6tAtWppWJwGC9s/Ne8HzzZK2axlndDmZ8lEAJhh7/unzCghfrw4tsccfu8oo0fpej6fODUswvPD87DQDMC2wWK2K0VWAaRYXr4Y0duOGAZLFvYrjZ/Zgk21a+tJfAa2xLAsG28YC9GWg7V4fPsBvO6vvoNfPmml0a7kdne6hGoxTjtuGUbqMZ6fmMFTz0/iRSsXm6JbpserM8Naalf6Xf22iBgsalw6JBj8Ow9MG+PUbhbWbGr0TGNqrhAYlgKoB9vHktDBhLs6gHIJfCSoJiSXUFHG1iINC9faKNhhze52JzwuIdtgyT7XY4dLyDDKuGbA1rCodk3Rrd2HlrGiL1v8sFym25F6LX8+TIFpYpy/S8Ni9FVwZ3H4ih/mx1b5LPJJ1O8Tl9pxGkM8cVxir3ZNl5DNIhirUk9mzv4yLNm/tkuonffb3N42pEwXDu2zdsPVa5pheYJF0/E8LInHcJMmLM6wzLTt54u6VRWqGCwWw0LuwSJmsDRqXMMijxtKw2IULxTasBkWYrDE2iWUsmPx1AUU9P0fNVxCDWMB6Kr59A93Pw0A+O7Pdonn6tOg0cR9o/UaTj9uOYCMZVF949uqr+oekbxU7oL/Ru+5VCVdgbqDAGAPC2tu1HSld9X2vErNfziC0vAuyKJb/buU2KkMcvaB5NJwGRq+PgECw9K2+wkIhg13Y1CGZaZl7Z+3T855utV2Tho00y3NNUNPT/WVn8N0q20YKfyS8ERm5RmWBDMezYQR1uyIEqLnr0ON3c9BqeKHhCEoEsbqVX/sdQlJ3xW5hBSVz1e73CVEBakt9i//zPvCo4R6SR5HdVKq34AWBWcMitvwTT2r+HbCGZbMYNm615wM/Kn5zbZpiQoFX+I49c5mBUS5wSLlYZHvu9Kp6Crj2Tb1ODLcN3Gki+LRNilookhATs1fJ4zQoY7BoqMXdVtxFBGGRooScj+vyigeq1OX0IgxDknh94CdO4WfK5cCSLV4lHF/wlGLASAXY5tRQmYAAa95RWEkjuOLTcENqAwWiWFREUIvWJ4JcndPzIAWyR2px3rBnhvFVjOzimCwFIBPsBKkwaefLqEa0Xe4tCcc/HdOqee0ZlWXEGn4oEfDwsP2rJfRcl3Y9ZJ4W7bBkjhDcNUx6C7NshqWVtnEcUTD0qIGioNh8TBtPgGqgukSkvvHa0TVIu2GkxgWqRnXJWqyQViaPFyuSJ0fyDbu8+NSt8sAGRbVF5eAUcrD4jPM1eaNOMay8bpxTJWbhd77mXaCSZL5lN8DySXE+8RF3ur8+AKYu26yvtmZbhu1KHf18fet3llpK+OjHsc45QXLAADHrRgX+6eazzUsVHTb+S2Kopxlmei4hCR3C60lVGQkU7QTHeVkiG4XNYyxxsWUHGDp9Pk2vsi+aeISAnQWZJWiX9rWXtTZx3YZVwDRsBgGS/adZLBs358ZT6d27uV0K8GhZpswLHRBpo3yuUQwWAqgH2z3NlI+Cd/qqCyMKCGmpfFFLdF+KFiZblO1kikyWMx26bn4XEJW4q/OZ60j6LRPVqc64oYNzmqCYZE7U812gSHJ7k1SNjV/gYZlRjMsanKhGoVWm4luS2hYyuRhMRLHuUS3zDAoEt3S73wrO0BrGpTBIjFhrjB5zrTwz7wv/dSwKNRr5vm50pxLbIHrmtAih7WaZlgUjlmalQ/hFaH3TOrVu8sl5HMrmy4h2+hXGHUxLOwkx+o1y6BT965Ry0pQqMk3joFLzzoOP77udXjLeWusvgK2hkVrUPQ7GEV2RIwUVBCR80rBDTn/u6DOZcxyCan93cUPXQaLJJyl5wDYDIvSAKkU/bLBohZ1ekHA4WVYOv1ZxFJPAGbtNQVlNB+9dDRn0HZPzGjXr5G2Ifuu2+SN/UIwWApQFBIK2C8QwP3P3RkshkuIiW6LmAJuiNhRQkrrYO5naVj4RGoZLPLxC11CjCmKiLCOu9CkFXHWbmLR97yvpng3cTJCFIUalhYR3TpcQibDYk/WVl8F3QSHLn6YOt2M2v2knx1fqm866Pp85wCtJSSHNcsMi3nuPqGiN6y5D1FCvIDotMtgsdxzboaFPpM0Skhh1bKMbufFR5VeQPXPYBSI+Dzvn2dhMU1cQmUYFq4RAzKNB7//6p4po0JNvuqZX76oIfY1O0bnXHgeFuiwZsm1JDHINZqaP+Wp+d3GZKutiypSl9ay8YYh8KfGH70PPFsxPSbgF41TtwoALOkwLAc8DIv6ysfqu/Q2tJ2xkXIuIVUwdXykljOBeyaahrFlu4SCwTLUKAoJBbgv014hdM2wkIE213d4XEI0uyyfdNwaFr5y87uE6HXw5WGh55ytQs3Bj7ukqGDQlWCtyVfdTb+IlmooADuhmw+qgq2EKSFKiHYjy8NiD16+vvpCnhUoQ+CSw7TYsepx5NVh0fvZYIJoCpq5V2tY/LWEgCKGxf2s2RqW7g0W10RA34mJmRb+4QdPY8vuScsllkVDyfeOGrY0Skhh1bKMYeHnupcYLElq9oVqlRT4vTOihFrKdRNbK2AefqzOhxtlY404N4g1o6nFl7Qt6hZwheAqoyTXsJDt8kUKojwvEz9Per19ieO8EXPkGqlQ37FGjLFGzRjXXVFCTpdQYvaV9x3wMSxN6zg8CaZ+z+1j+xLHqfMdq9fy66XrcdkDhmKKF43UcMSizGB5fmLaZFgi1XZnnA4uoeEGD8OVYK7O7O/K1HSQkA+0UWQNttLkRwcn18Shf5cNnyKXED2vyZm2NbhL22XRPJ1zYVFXNEeGrlvBBwIlArRFt+o8JMOfD2ZlE8cBGXvkgs7DEouqeUpF0377NCxlXEKUKXExLNwwyIxdj8FCvlPFFaXJmRoatFozbbItTOw8dDgR3pX8b7pCtRLHde8SUpOnpWEhbd7+0Db80Zcewo13PC5qWFzvPzWs6nFsMSwqwyg/H+oS4sJPnquI9llBShxXj/XCRkGKEkpT7ZKl23HDlrqEAK3HMA0WdQ5me+re5pluybHVoBHHZiLKbL/UOl+aOC7LiaO354sSCjpJn3TMErzqxJV4+y+dkB8767epYSknurWNb8A0QtQ9GeUals640mLjIyBoWCymL/VHCREjSd1LZZQcEhZgahEw3iAMy+SMoWHJXd65S8hqZlYR8rAUoIzoVhLHmSvu7hgWTevbKxnRv8mNjSTNHzhXJU87d4nZps9V4WVYDA2LFuc2mI5AnWMU6cGNG3i8Jo9uVwse4ygSKVrfKsiHsgyLlJeAZ7p1FdnjfTX+lhgWEu5apDNRx6rFEeqpzFzR49J6VVI36f3MNSyJaaBIGVSrMCzGCpXf6z6IbqkGiB9j18GM8dg7OeOIEpLbthkWbbA0ahFWLMr+5teeuoRovgzVjvqebkNhRAl1wrNpgkmFsgzLOGEdeESX5RISGBYpFDz7Pfubim5NhsXsr5Q4LmIMCw8xd70LKrcLkBlk//gfLsj/phnMXan5DzgWLbzArQL928mwTLWsbXmW34ZDw2KnnJCfiZFalBeZVe5rKVO0CiUfa9TySuO7J7SRRl3eITX/PIErcoWiKA9LtxoWKUeJOpbUpEtYm/0mTw5Vw6NpMz7RLZ2Mpppaa6IEZTwaIGNYHOfR2UbSNWiDxe5DO7F99b7oHwo/w9LJYklU9BRNS3Qrr8goOPsiXVcjT43TJWTe11oc5decPwMAuf4FTAwVjdKEX0WiZp+GxWKVSPemm7Zx2i3UUaxqzYJbRYokSz0uoWnCbgDIo4QAYOWS0fx7fn/3EoYlTU0XjwJnEigMzVRHH1Ovlc3DIohuG7GlYWkyl5C67/QYvMYZPSe6LRXd0pBnns9FL/j085ttqw2elF0X1/hKK8ZzJsfMw0JZC/scONQ23kzNXMPSMVgOiKJbu1oz/VuhqDCtybBkx83zsAgLMKVrWTRSx5Edw3rPxIzRjpXpNmhYhhs+waKCxLAYKeG7NFhyhoUIUsvmYeHblE3NrzDC1Pt5m+QLn+iWv5DqTx6pkdOghoZF1ttwQ4YmjosQYfUys8BXO7UNLp+YluJgLy6hdmppWHyRJoBfK6SQTyipO6zZEt1GERp1VWTObtNk8eS+8H3p4M9DQl2DrET1+5LlSVmNuwWfPKUoITVpNNu2MDuF+33jK0/KsBy9dFRMLAiY7oaEUf3SO+51CZE+8PlEYlik+jtjDTtKSLWrjAol4K0LDIs1TjBXLU38lpD7wau6c4YlZ2hIu1YeFse9Uc9MneSxyvttZLol7TmYZ+ncSmlYaqboVgprnmEuIZeGxU7+yX4n90vdSzVWSS7V3CU0EmNFR8Oy71DTcAXmLqGWGieCwTLUkJI4cZghkamlZO9Ww2KyD5rC5O27QA/rSs3vGoi56ybvE3cJOa6LFdbc2Y/7ydv5wEbr8sgDgeUSapoaln/8Dxfg0jOPxfrXnpj1XWBYJJZBgpdhMaKE7N95HhZ1DmVZOkBe3ZmZbuV2eNXbehyhEcuGIN2OGozSsRUDEEcwhJJcv8X3VYOoVI3X1iqRZ6bZT4NFfvboBKAZlkScfF3XmyZtA2BoWFYuGXWGgfKQanot1DU0DBbPc2xoWEq5hGxDfrRua1hUn+rMJRQbBovdV0CzWspQoUwMfWd5EUVpXKD7c+NRcm8pKN0GZ3EAsFpCtkvI5xJOHQaLKRpXLEVm5C0dzZ6LPKxZ2FY1p56le57cjav//t48WqkoIELSsChQDUvGTKe5S2i8Uctdl1TDMkraaZL3fy4RDJYC8PojEngOB75pt6n5c4owMnNplCVsfAyLXknI+zbqsh+VnuvEtDsPimvyUYMfdxFIyfEUympYTjxmCW56y1k4adWSvB0+mJW9F8pgkYrH5XlYCGVKwTPd6u/MiZOCG7VilFAZ0a0Q1qyuuaSlkutV2dupPDP1WmwMWvR6igwL0+/QfrtydwBal6FQNdPt9v1T+fOiWuXFD6cFg0USZvt0EtxgWTpazyfXlUtGnBQ6PXaaykXteB0sCjmsObYmlFFRdCsxLPpZbjGR+4hyCUmiW3ZNFWwNC6ztJIaFi7N1HhdtsdBLkXiMd6Vh4aHTtD8u0a0qBChB0mPR7wF3WPPkTNtavNh5WHR/73hke14iwMWSKzQFhkVhqqMjfHLXBE657na87wsP5uPY+Eg9N1hMhsUu7ho0LEOO6nlY7MGgew1L9i9lHxLP4MlhUuyyEeBqixa4M/tEDZbyeVgS9jJy6tWMEuIvZva3VEtIGyz6e2pk8kGlrIbl4HT2Mqt05fy4QDYYSStoiWGZaSf5OUsrPt9qTaFGxHiFolu1Wou0sFEychJiRNHSCBzqnjTYKt4wQAQWKXdR5W4OuRYLP66tYSnPsDyx8yB+acNGvOdzDwCw9RBSWLO6p7wCeLa/20VA2Q0gm8CVXuHopaPOFakRnupwCfFK4xSyS8hOHMe1G1n7koalZunLuEtIEt1GDiM3fy+VBsVwCXXYE9jvgg5rzv5WBp86YgpTT9QWDEwFnZFaYFgcLiF1zanGiENdOt8iY4awsIA5jhycbpXSsOS/d9hFPnaViRJSSNPsGf/b7z6BNAVuu3eLESW0YnwkP286vmkNizIgg8Ey1NC+Tvc29MGRtAq9alh4AbuyBosv1XmR6HaEhK5K+wFZ7opSqfnJJMAZK3Vds0gANbHK10/SNWh6Wb9IumaMPYGW1bAohmXxqDuQTlrJqP5KtV/UOfPICEAbGApFUUIupigX3RJ3ooo6EDUsZJB0RXxk/acMi+4/7aY3D4uQnMurAejst7Rz/aswLE/umkCaAo9tP5CdT+d7nfLePAagJw2JYaG5QziklafSsaxcMur0+U8zg8XQUXQ+GhOz1yXU7vTBNKDrcSSyC1L0XMawZJ9bSYpNT+/Bo89l14+7hChr5GJFOcOijGHqzqap+fPzZOMSTzyXubP09tI7rsANLgrKJkqhwnsPuRmWhI1d/HvA1rCM1mv59bMMljxKKPu7zmLTj1rSyZbMDmhnKU/zY9aE+z7VbGOMJBKkLqHlHYZl76EZkakZFoYlhDUXoBaZE6wEow6J4MfvtvhhnrmwUTNe5LLNlYoScrSVMyyeSSVzCcn7mxoWHc3TYO3SxHEuvZBTw0Iy3VLDnwrqipT2LlAFvQuj9dhiAtQxeNruJmFYyriEpOta85yXQitJjUG8FmuGRTr3Flk5uQSUdN9Gzc71kZ9DakfTUEOA9rFeKxcltGy8gQPTrUoaFtVXRXmn+URgvsum6Fa7QaRLW1Z0q/q8de8hrFwy6oxuMrLspua9kTQS3rBmwvK0yKNVr0XiBCMaLPVazuDtnWziTZ+4K/9thEUJyYnjzGNQowQgDEtKmWMh0y1jl/R7rY1pru3xjc203xS5GJplIFZt7/EyLOr+uN9Z9VxQDdHS0Tqeb83g4FRLNM5zFppdk1R4XoHs3A9OtzDeEUxLUUIUU80E4yP6+0NEdLs4ygyZvZNmplu1UKB5neYSgWEpQCmXUMJeoC51ExxqkOZ1PugL+75/dzJefuwycX9Jic5/K2ZYPAbLTMu5uqGYbiZW8i4pcZx6x7jWQme61SsIwHQ1xQLDktUSMvtS1mBRWCK4hBRoLSF+DIthaenngmf3BOx+ilFCxKXhY+2oj7xGVtlFeVjyVaywXS7AjOXcM2o//ryoQVGKePG5wXKGpeP7r5I4Trk/lYaBU+2+sOaWGNbsfv91WLO+p//3Ocfj1Bcsw0UvOcrpEqIurjQ187BQ91n+ncPVlp2vNppig2GRJy5Jk0MTx3HkUUKChqXmYOWo2wcwNSM0NT9/F9S1zsspKFeblrCYGpZE3xvJMKH9p1A2gcvNQjMRc+QuIfZIiFFCpE95pNB0k2UCN41xW39iaooUdk80cf6ffhO//dffz9rxaFiA7F2kmjxTw5K5hA5MtfJ3NqslZLYRDJYhR7nU/Pqz5BLqVsOiH6iaoWqn7V/1yrX4/O9fKO5PB5GiKCFLrOdyCZE201RXWfWBZrptsFwP6t8o0tfa1rB0VhhsEptu6ugj+h753GdVk/hRhoUP6FniOHufVltwRRGXUMOx6qWQ3DLUpeEzoFuJXnVmwsYSYc2U4ZJcQp3VpJTrI29LcJ1MTNsMi1QglB9XTegq6qZK4jgl9FWUt6LhaGK8LGEYPV5Hw+KIEnJdbjUxUbvgHa96Eb767l/GUUtGnRQ6dwlJVXh9mW6l1Py1KLLeg9IMS0Oe5ADBJWRoWHSbFLmGhedhIb9FiESNDX2Ocg2LkYdFH4uey6jQFuB3CfHnSl1Wv4bFxbAUGCyjup6QFFHEdX4Kah7gbN0Pn3gekzNt/PiZfVndJI+GBei4hIjBQqs705ISuw5O5+1w0bjjEs8agsFSAHWDqhQ/5Jt2q2FRlu5Yo0bEbWb7dELikPJajDLmxOU3VTkXbNre/NtVb4NiqtnWkwYTPkq1hJp8IuusuNQ5qJUKNYSkZFZSKHFZ0a0CFcvxgc+1kplhmW4B0yUk+Zd9eg4FyrD4jGDjWAUuIco++MKalYsmq8MiH1dyVanB1tCwsEimvC/CCnV5x2CZapUrXAloF+x0KxM/q71oYjT+HGiGpWIeFoFhoSgX1my6jdWhfLWEpGrN9VpkHK9RszPJAh3RLTsdP8NiuoTou1aUh0VvaxsccezQcyU09Dkie3c0MOw46jq5GJYR4RiuDODaJeRhWDon6wvL5xoWwKzYbGv8tKu/xp6lqTxHkHk8pTsBgK17DxHNjmyoHmq2xTD38UYN9VqcLwR3HpjutGMzyHOtYQkGSwHyapUFFLyClBega4aFqLhpTSPafhzJwjoA+PmOg/irOx7H/intl1RFwNTLxiMoFFRZej548znPVW+DItOaqNWDGYmQr8RinRxPylvTStJ8BbEkF2LKmW6pUWS7ZqoZLJRh4dfZlZq/1U6FqA7KsNivnS9rpoJ0XtIA1GrrQbwWa0NLeobb+SAZOVfLgFl3JIrsBGVqP7WrukeKgZMSKfqi6dREogSsP96yF2f892/gyV0T9oEZ6GR+qKnLQtB7xSeqaTIpVGJYCsSIZcb3NE0NLUW+mCBdLMWwxJH1HrgYFisPC0kcx6EmXfWvkTiO1OThxwBo8UNybMWwCKJbwFxoWGHR7Fh0PJTeBcCfh4U/B9olVBwl5GPSeVgzoJnhA1O2Kz1j9mSGRWWp5W59OsY8uWsiX5CMehgW6Tke64z1KrR5276pvB3OsLgM8NlCMFgKUCpxnMWwsMGlS4Ml17AQupa7nOIoe4ikweZj//ZzfHTjz/CVnzxn0H/Z+XBlOpuMHZlu7WiF4nMzMt3G5vU0XBJ5WLNtRLUTTZsvNRgWcyUGmEmhXBVNXeCXcTEp1c5XcK48LK3EDmvOQp2zz+Kqt4DJAkxjT523tKpsJgm5hnbyJ97XrG2/6JY+i4Dsy24n+tlXBotiWAyXkLr3nT7qJIW6rdxgIanu90+18O3HdtidY6BG6eSMDr2n94qHSZuiW3YBUtlFB5juGAllUpm7kpeVTRxHywPYGhbKhnROR3IJOYSagH5e5cRxMiuXu30iczuQ8TGCnCOlTQxf7VLSx6FdTwlbVEXDok6VPweqb34NS4dhYdcwFZ5fySXERbeAGU5vaViasoaFGjBP7ZogrI5sfE4121afxwl7r0KbVdK841aM2wxLMFiGG6WKH1KGJbFXY91mutWpk/VDlU0K2e9RpCdq6QHdfyhbJew7RBgWZbCwQZG7KRTDYq2cujC+jEy3ncHDOn6sz0UXXdN9ahEaf0kna6RRrZkcj0YJVTWwFrOooKUk1Tof0EdqruKHqVF7R32n3TSy3973d7afHrR9DAs1aGpkFStpWKhxmK+WhXtM3ZOAzBxQzZBypeUMi6Bh4cX1JL8+TXUPwCpM+N//z8O45n894NRrHZppW4JvQMjzQiYFfvop3AsWnjiOo8yKNEl5Qj31r23kKZjVmlVYs8mw8Cgh9e4lif1ejzVqzugvnpqfTlquPCzcVZu7dGDqW0SGhSZZVGOAwdCYz5JmWGSBvBgllGtYZIZl3yEPw8IWW7QvQGYQHiIhwwrKlX1g2jZY6OLLYlhaMsNC3ZpPPT+pI/nqskxgqplYc9E4WZCtWGS+a2tXLrae6+ASGnKUqSVkuYT6xLAcItU0qSBSorglIad6oKea7dz4UXlFeM0O/pKol9+iPUvqCCimSfHDfDXdeW90Rkst+syTlNEU8O00jxJaRhgWvhIDqJFpT75FGpZFLCroBSt0faJGXXIJye3wgZBGDomrSsslJDAspFxCHhkhDPhU9Et1Ar7U/A1SyFF2CWkNCyBPxC1irC/pGBqTM21rRZ9rWFJ9bNWXZ/ZM4j99ZhN+vGUvAODYFWZ9qEmSYnxypoVPff8p/O/7tuK5Do0NmAZLdvzsMx3EeZi0Di21Rd9lXEISawaUcwkliX62gephzU1idPI8LPScG2Tx5UscxzHCRLf0XGNiSFDwMcqIEiLuIumYtFaWGpe0hsUtuq3EsBS4hLwGS2puy/c9MN3K3/UjO1WQAb3QOjjVssZRmqKB6wIPOVxCVDD81PMTmtVxRQnNtK0FGzWolpOyEmONGMcsHbXmhTkmWILBUgTfIK7QZi+QZbB0GdZMNSwGnZsPBnpbKVRWTZrTrSSfcBZ1LOp2gYZlhKzGKLpjWLRLiBuANJpFjV185Z19l1ii26mmnOmWVtj2DfQSqGaFZoDk/QHcAwOg7x09rmsFpfpKIZFyRnZOzyBNj2VWa7bzpNCEUFTY7TofNcBJ1DA1plU4+KSQq4fXFVLn0E5TfPhrP8VXH9yWb7v2qMX467edjTPXrABgFqXcdUDT9s8f1J+phmVypk1S8+s+8ER0dPDnRm3mhvAzLK7IqTIr0iQ1GTl1veghvXlY8ntoGtD1ODZYkzpx8/pS83NYLqFKoltzuzQlifyiyFoEqHNtMrdwvj/MdyNJUCy6FY6h2nW5hPZ7gglcLqFcsNtJ679opGZE5WgNS9NmWEgSTOV2VVBhzZZQnDIsRMPSqMWiAX2o2baO62JY1h612MiwrjDXLqGQOK4AcQmGxXAJpf2MEtJuHDMZWvY7jwjgaBKGRb2Y6qWxXDLsQXS5hLoREE+3EixhkzXPNUGjVFrGilG7QNT5qJesnTg0LB6XUFGm20XkBT566ajx4nM2Y6Qu52EB7HDJmcI8LCUYFuIS8uWeaBFDjWc7bSepcU6aYYm8uXlsDYu1iZGaX/nrJ5tti9lRq+zcYKlpgfduVsNlpB7j117xAvz0uf14YMteoyjlzoOaVVGhmIDtElIzJB18p1oywwJIVXFtQ49v64qwkYoR2pEppu6GR9ABNjtm5G0h99rQsNQYw1JTz48pVJ1uJVhzxKLCPCxy4rhOn63nN/uXM3F8QScJ0NvG8xt32oHuO18gMvfoeKNmLBh8DIsrP5WPYcnHLgfD8nznGT5i0Yjxuxp795NABTW+0XH9lSeuzJIP7jmE/33/Vqfolj5HW/Yc0uHdDm3dVLNtsYeUYaGLsxOOWgTANriDS2jIoSc/9zaUQKGDQf57t5lum7JLKNdCMIEdh3YJaYZFuYT05JRta2lYyKrXOJduXEKE7qwT+h+gLiE9iKjVZhyZIl01EY2RkGvVLh0XKU1dhmGhhgjVsByzdNT4ja9aqBuFgyc6M6KEyoQ1C9eZ5gTyrSqp+ymOIsNAcpU9oAajxKJNMYZFFt3qQVc9Z5PTLYstoq4jgObm0QOlgnJNLlJRR9N6IlLhlwAzWCzRrTn50fPJ9xFysihwoSfFdIGGhRu00v2ijJk6npXRlV1D6Tm2E8cxDUusGRZ1vL95+zn4xh++GmtXLkYcO6K/OtueftxyjNRjnHPCEflv7lpCaiGR/Z0XSUQJDUtia1ikTLlqW/4u0EUH4DJYsn8tl1CaPRu0YjGH6r/FsCQmw3LUEtNgUUY8jUBS7asM1eqc/8vrXoY3nvECADSs2S26peNHo+aOErJEty6GZeViAPbz61qgzRYCw1KAMi4hm2GRJ4WqoKmTaciZ5AaRKED1QE8TDYtyefDEcZagtK5WvWabXbmEmlRHwFxCudYistxFKnKo2dFkqPNRNCu91hJNLedhsfvfqEVQ0giqYeEMi+UScqxkALOcO8BT8/tFt7TeCgXVsGjRrS00pKGemUtI97HZTgyaWkcJxUhSM3KMYoqJbt1hzdnOqgbQ5IzNsLRYNevcJZSk1gSii8cpg4UwLIbBopkZg2FpEpcQuZe+2kQSC+cy1KuGNY/WazgA091AcwwpJCkPa7YNYI46MzjqbOJS7hfKShy5eAQvXbXUaIPrHBRjcMaaFXjwj19nPHM0GZ95Ttm/XHRLqy1HkTsPi6VhUQwLK36YpMS12Hk/x0dqAIl+F8Oac5cQu+5JmrMrcZTpOnaQ50xto/ppfN/5c7eDYVEGC2VvRmpZ+nuaYVkZgWphpsYSy2BxrKJd41ImumUGi0PDsvaozGDhC7I5tlcCw1KEMi4hLo7jm/K6MmVBRbenHbccAPDgM/sM3YeC9FKqgfcgEYEpbYF66ejERjFS66PoVlDA58dXDA/J7UHr29BQXjWQjjf0d95Mt5LxKLzkjbqbYaHXlV/j0XrsFKFJGhZK3XNwo1cCdQmpZ0oS3TbbZqZbQwvEyx6QpGMuASU9H2WwSAOiyLAI5Rsyg0r/TaOEqEEC6BWoCi+nmZWpwfI8YVgsDYvg9vTVJpKSiblcQkVF4SSXEEfmEuKTH2dY/GMMoHIZma5R2q9GrK+zNIZIfwOmPogbyLSoIe9/1l72tyG6Jan5XZlueWoD7RIyn096nc564RFYuWQU605ZZbQnXfM8cZyV6TbNoyuXjTdkBki57BysqEo6RwW3gNbeUYNltPM+tRI7gGCs88y7Ese5huKMYbH7fajpF92uWCS5hMw2goZlyKEWAGXzsEg5DnpmWBo1nH78CgDAE7sm8gdemqSl4+4lL4grSsilYbEnm+rnQTPS1hxhzUaUkHIJxXrAo2HNWsOiB245SqhctWY6KHENS8OjYfG5hLjBMkNWUK5VpYKLzaPh0D7RbaudkKyZkaEF4uHWLWJE0Qq21vnMmOyW6BIik4canCdnbKFfO5UZliRNDVEtQAwWiWE56HAJ8Sihzmc6hvsMFhUmrK5ZytgOc9vqGhYOfj0Av8HiEo7XeVgzY9dM7VL2Lx836nEEk0+wn2UKl1Cbv5dUNKtOK4rkTLyihgV6f3os+o4ff8Q4fvSBX8XETBufvuupfBvJBeuKEkpSzbAsH2+IRoH6zpWp2aVhUcYBfYZHCbuor1n2r2JYFBuojqeeSxdcmW6nmm3rOV3kEd1mfRkul1BgWApQJqyZr47t7LDcMk7x8LP7LIU6B83DcuTiERx/xDgA4CfP7DX6BrgHTADYR3ymi8hkn/VXZlhGHS6hrvU4nXNVoZV5tlPiEuKiW6q/oMm1xhpEw0LoZQXTJWT2o0jDQl/gY5aOGcYMHVyVIeCsFcMZlhZhWApEt65njd5jKZOmAq0lpPZRq2uLYSETg89gUas8xW5JYc00BxF1CZVlWNpJioPT5nVT57ekQMPy/ITDJTTTMmrXqG77iinmocq57sJdHbsoDwv/WrpfoksoMRcHvsrrCpaGpRPFtnLJSKdeTDYhUWPIJ6pcvWwMRy4ewX97/cvE42Xn59CwsIw5qtU0NVlRl4ZFlefgDAs35BLyLKlINz4W+oof8jG4TVxCy8YaMhvaOT43MtVz7tKwqH5Qd+SIoGFRxplamE2x5IsSK5W3V4vFawB0GBb2Lo6R8U4xQmONGKuXZekErOcjMCzDjdwl5DFp7bBm83e+qv36w9vx+/+4CVf/8ovwgTecKrbZaic5facs7dOPX45n9hzCA50cFUUuIYW9h7IXaKwRw5Uan07GmW/ZFSXkPIwX6qXTyauYwRTBCmvm2W+1EE4nv5M0LFWLH9IVmBJ3Ah0NixFloT+rQcO14uAaiVaS5OJsMazZYOnEJo3BgxY646DuJ9W/ekenY7uEOhNuLdLFFYV7PEUKcQKyL7udaGNdMywti2G0NCzkWTvYiaBYe9QinPXCI3K/ujIkDzo0LPQzZ1gU4igbcFtp6i2maIYqp2IYcH4uDpdqfkzHQoAiSe37wt1Q1OhzpUmox3YeliiKcNt/vBDTzQR/fvtPs7YTUydmtEGe8f948YvxOxet9Sa/025E+5wAcv5kO8q+uATouYYlF912IByHu7f4vZAz3coMS5sxLBK7xAMW6L5AVkUZsBkWde+VcRoRlxjVsOQMS2dxoBYL6pqM1MxIMxoVJUVyKUw3Eysqi7qEXrxyMX7v1S/GizoCbKmdecmw3HzzzVi7di3GxsZwwQUX4J577vFu//nPfx4nn3wyxsbG8IpXvAJf/epXrW0effRR/MZv/AaWL1+OxYsX47zzzsPmzZu76V5fwTUXEkw6X3CjsAHmmT2TAICnn590tklXgGqSUG4hZbAYg5MjcRUA7OkwLGOkXoiPYWnUdD6HMuG2ZTDFqHPLJUQZlkS/0LQ0Ag9rpgYJPXsaUcUnS0moZriEGuVcQvnAUNIlRDPdiqJbyrA4rjEXzwJyhVpqlKn+5en5HavCRuzXsKhB06thIQak0gIlqWk0qPbVOUaRGYmnGJSPvfVs/NXlZ+bPOK9NBLgZFlqXhx6b5pUoo2GhmYWLHntX0jXbJWSLpHlqfvWdq/ihi2Gh9biyPmV/vOToJTj12GXG/XVp1+jftOiqCzq/is0iZ7+b26njAyo1vyNKSGmrOg3QKCOuYWmzc+HvZJlMtyNkIbWfGCwyw5L922LCYHXOWsNiZo7l/aBRXK1Eu8256LbZTtEikX+8HRXRA+jFlysPCx8PKaMcRRHe/2un4K3nvzD/rozGaTZR2WC57bbbcM011+D666/HfffdhzPOOAOXXHIJduyQa3zcddddeOtb34p3vOMduP/++3HppZfi0ksvxUMPPZRv84tf/AKvetWrcPLJJ+POO+/ET37yE/zRH/0RxsbGxDZnEzSU1AX6AvFwRMDWsKgJxecbplEmyjI/vSO8fWLnRKdvenspn4FCHl1TrxkvCO073b8Ru+vKFGWVdEFNEOpFynQBms6NyWTSJC4h2l8tulVCtVTMsaE+0mgZBTG6ojNYNWqREUlii25tRsv1AluZVIlLqCis2a1hoQaL+z5QmlsN9K70/DpBV0wmH/vYVAAOyOdNXUJLCFO1nxXI5HliKCOmGJQlYyb5q8Ok250+pkZk0O6Jmfxe03tM9QIR9LNRJkqoRibjIkPdtfK0ooQa8gTNmb8kdbuaXdEhUh4Wsy/6/tIq6bwNBbr6doG6anj/6THpUWh2a8k9Sp+PWq5hQafvpjuxnVD3VueYzHCTXCjqvHkV+4xhyZ6ZZeMN0TBX90H1Q7s0s79VlNCRi0eN/bhxRs+fnoc6JA05niLjB2fpXrRSpwJQc4or0y13Y40V3GNusHmI/FlB5cPfeOONuPrqq3HVVVfh1FNPxS233IJFixbh1ltvFbf/6Ec/ite//vV473vfi1NOOQUf+tCHcPbZZ+PjH/94vs0HPvAB/Nqv/Rr+4i/+AmeddRZe8pKX4Dd+4zdwzDHHdH9mfULV1PxUVyH9Dmganqdvp+DVcQHgRUcvNrYx64QUW740m6V6uTR1q7erEzGppcdJTaOhLNSLRF8Amk/EdP+QPCw1tSLW10pRpXSClKOEhDwsgnZBlZ9v1GIjLfZRS8ywZjq4qkHDZSf6ooRcETYKLjaPruKbHg0LvVbqWOo8uMGmaOYGiRKSjHM7Nb/dP8qw1Gtxfo14qvG2UZyRMmtpzqAsZiUSFGMz004w00qw/1DLmLjbSZqLyw2DhTAyUYRKDIu5qndunp1vSdGtNHmmqX1fEs844nIJ1WIzao2zPjRninYZuvvLM65KKMp0q5ozGRbkv40I4xYN2+dhzZlLiS4QZfeWlDDP6HfnZ2Xc54kyExguIV9WajX500zNADVY/AwLTTnQbJPFV+c7apjQHCq8Hbo4UO+pxPxOteTihz5YeVjmE8MyMzODTZs2Yd26dbqBOMa6detw9913i/vcfffdxvYAcMkll+TbJ0mCr3zlK3jpS1+KSy65BMcccwwuuOACfOlLX/L2ZXp6Gvv37zf+GwTKFT8kn1M7u6rFsHT+5tk2KXQYKZ0kWUhhJE+mLpguoazTebIiptVwrpw6fS8zmFHkWhlyHDNfiMmMAKYRQyeYXHRLJkgp062kPZA1LHH+L63SWosjY4JpSC4hp+jWzpvBa+dQ+Ard5f0hA29usEglGchzpQZEnZ6f98s2HHyZbn2J4+gkG0eabj7AGRbir69F2lCamNYC2aWj5mBPDZiJ6Vae5XbZWD2PblCRQibDYrqE8ufJ8+5ZotsSDIvrObDE7MJ7U8YlBOhxxB8lFBl/U8TCpG9FCZFnbLTEosSVbJAKnQHTwG2Td9btEtLaKtUSoPKwmG1JCwHDxV3CJTRKklFSg0W6r+pUNWOqF1CtdpLvzzUs/FypaF9iWKIoysfZQzNtncrAMnwEBkkKa54RMt2O+O+xnYdlHhksu3btQrvdxqpVZpz7qlWrsG3bNnGfbdu2ebffsWMHDh48iA9/+MN4/etfj2984xv4rd/6Lfz2b/82vv3tbzv7smHDBixfvjz/b82aNVVOpTRoxIkLXDBpC1XlpE88uRiFVO2TrxTM1VTxgzTaqBENSfadOi1Tw6IHPj6/q+tQlWHJ+0nOgSr+aVizmkQj8h1lLKRMt/T06T0rU/ywQVxCNAsl/Q0wV4PKUHBmuu30t1HT5+TLw0KNWtejRo8luYTUz9RYUtdC9YMbz3TQda2W6fn4UvPTcNQoivIkhZxhoStoOmjThF3cIKaMzcRMK0/mdfTSURzViW5QBouZh8VkWMq4hNT1i4nhW5Qw0fUc8K/FvCNEs6HAmQS1HeB2CanwdQWXS8jQfbAO0nGgzDsu6Z4oK6s1t+S9V88I3BFznGFR7fDx1Yh4chhrZRLHUZeQcmEuG697XULcRUNZvigy85rQ7WgfVD8lDQugF2fThB3h51OPs0gw47uafR+nW3biOJ4VmCOk5mdIOpP5b/7mb+IP//APceaZZ+J973sf3vjGN+KWW25x7nfttddi3759+X9btmwZSP+0f929DX+BuBvFjpLIGvOt8vIJgjxQ3LL2raYkjBsuIVPDwvM1aMEhH0gVw9KlwcIYFjVOZ8UPTeOwFuvrrwy4WhyZGTs9UUKAZrMkWlhBrcAatRivOmklAOCIzqp9xaIGfvPMY/HW819oXH/VB5d2gSdam6HFDwvCml2rebpo0r53fR8WkWMpaJeQzLAYqfk77UtJ0njxQ+m8zagtD8NCDMl6TddjUhPFktG6KPZcTEKbdxKDZeWSTCugNC0tF8OCci6hPHttBQ0LL22Rf88ZFkF0m6ZSwcXUGnPUwsjtEuKJ49h40fmTRjLy+0jHgTLvODXqFOjnXMNCukIZVHeUkMmaRPm9sF1CeVQhZVg8+ZNovxQbmecCKsGw5PeBjS3tNM1DmlcI+0qGhqRhoXup9+3QTKKjhLh4txbhmKWm3pMeW+nBMg2L+ewU3eN5nZp/5cqVqNVq2L59u/H99u3bsXr1anGf1atXe7dfuXIl6vU6Tj3VDO895ZRT8L3vfc/Zl9HRUYyOjjp/7xd45IoELo7jCyBLR9EZcHyrPD5BALawlkf2FIG6hNSglwgvu88llK8qujRYaJ+TBKDRCvxaZ6K0bFuqgdFCXEemW8pEkJLrzbY8SancIuONGi4/dw1WjI/g3LVHdNqN8NG3nAUA2PC1R/N98rDmgiih8UYNB6ZaRh4WaZDmRq+EuOM+SVJZw7JotI6JmTZjWLJ/6+y+K6jJvV4j1ZoFNoEbYMUuoSgPEbc1LDrvCGXWVHQG9clTLB6tYfdEFtqssq8etUSPAc9LLiGDYdHuJz/DYgoXs0nSuTmAConjHC4hTtW3BSNJuQTKJo6zGFmYDCYgMSy6f9U0LPLzK4luaYRYUS2hhiS6ZfeCZ8UFbBe3q9+KYaFuZjNKSLpfup+0/TRNddI4luVW9a8WR4bBRt9L+u4oqH5R/Qk3wOpxhJNWLcEjz+03vlNYOlrHzgPTWRueTLcS5nVq/pGREZxzzjnYuHFj/l2SJNi4cSMuvPBCcZ8LL7zQ2B4A7rjjjnz7kZERnHfeeXjssceMbR5//HGccMIJVbo3EOSMhGfAsvOw8EmBMy4dhsXjEuKaASAzKugg5KN/JYzVtUtI9VFrS4jBQiJG7Cylqi3O9hQePmub9LNFqi1TZb96MalLaJoYHjWy2lJjN12R0zEmD/9lLyY939OPX4F//0svxHv+r5eiXovxhtNfgFXL7Ag1OpAUhTWr66p8xGZq/oKwZsfsaEZS2QbLYpbKWyXSAkiUkCfTrQ4H5+eSWqJb0SXEGC/F+OxnlW/bSYqf7zgIADjuiPG8rf1TcoSQPj+d20VF/ywdrWMlcwnRCZkzLNoVUMyw5IwTZNaJonTiOId+SYoSchUe9bmEXEwjoMcLahxxZqhqlBB11ei+6z8Us0LfT1rw1GWw5AyLysOijgP7XrSI8SudhyRMV4dVTVG3TrGGxXQJ6VpYJGmcYLAA5v3niy+JLVb9OkQSMEoalg++4VSccfxybPjtV3S+022o+mg8/xFQ7BLiQ9W8Sxx3zTXX4Morr8S5556L888/HzfddBMmJiZw1VVXAQCuuOIKHHfccdiwYQMA4N3vfjcuvvhifOQjH8Eb3vAGfO5zn8O9996LT37yk3mb733ve3H55Zfj1a9+NV772tfi9ttvx//5P/8Hd955Z3/Osgeo58ufh0V/lpKVScXfgLKiW/OBokyBSxXvwlhDGyJ5pllBfEddQpb6X2lYRrgBEDsHUooo0mniqWAujmCxP3GkBzplwNVY2ul2zsboY9Dr4hKnxoqq6Pz2Py59RWHfa4bBolwj/PzMwVsN+s0Kqfldc6N2aaR57RmDYelM6NNCpADV0lDQ4od68jG3mRZyArmrNevVsxLKcoallaR4+NlsNXjG8cvzUGZl2Cx2Miw6Pf/EjC7muWw8+17lG6LlF6iGJY4i63mSoNPt65VzEcPiGsjLMSy2EdJNlJCUOE7qC3ULWCvoqi4hgWGh/Y7y7fR3qvuujKwtIrrVGhY32zUjMCxck+fqt4Ja0KQpivOwqLGTGyypmSVXwkg9zsf2mGhY2qSWEO1anu226WdYjl46in9Z/yrjO4VFjU6EXUtH5y0fb2DRSA0nkcKXEnzPx1ygssFy+eWXY+fOnbjuuuuwbds2nHnmmbj99ttzYe3mzZsRk1H8oosuwmc/+1l88IMfxPvf/36cdNJJ+NKXvoTTTjst3+a3fuu3cMstt2DDhg1417vehZe97GX4whe+gFe96lXW8WcbZUS3VrXmki4hlRBI0jTw2i0KjXoMVVpYmpB8GGvU8smSJ47jIjXX5KX2G2O++FocAf5KAwB0MrhWx0dPBXNqsG0K7oJpMonQl4bmbDH60sGMIE5Vx1Mo+xLSzZQAVyppQN0NMsPiN1hcz1oUdQyktk4ARxPHqdXSjDJoWag6YE92tE988kmSFHEcmRFaKpzbabAg/328Y0DtF1xCqrzE6cevwA+feB6AFt26XULZ9wen2zjUMUQWdcpWAHp168p0G0X6HpbJw6IFpf73H3BrWMokjqPHVJDqj6k+lE4cZ+X9gLW/xSCQ952/4xIk1zEdMrRLyGZYokhmP7go2+ieUCZBGd2G6LZIwyK8t0B2H5TxuHy8IY4NOcPCov6SJEWz851kmNJtAVPDQhc0hktI1RMiLmVJw8JBXXvj+biQ5Jq+Gy47A7968jGFY9+CSM2/fv16rF+/XvxNYkUuu+wyXHbZZd42f/d3fxe/+7u/2013Bgq1yvKJ7gpdQpbBogeMqVaCJcILResIUdCXz9BtlJh0Mw2Lpj6z/ma/xWxFEjkMtdxg4VEcpSf9KGc32kz8V2PHjCM96dIic/RYeVZcdoz8d5YYSupv2UUDvUYul9BYo2YaLA1tsKhzFUW3DkqdgmZqdWlYAD/Dwtk+ZfDVOzVIsuMD3/rpDqz/7H3Y8KbTcV5Hz9Oo6QFWIvRoav441i4qLrqdaSV4aKtmWO59ajcAU3QrQbU3OUMYltFaHj66WzBYOLrKdOupJaRQOg+LI+GilSJe0Mxpg8XNsPjDmk0GU+ofjbByTbpSm4nj+c0NFsqwCBoOCp5YkO6fCAxLM8+bo78rDms2/x4TBOtLnbWETAZMjcntJM3XbC7Gm45DJsNCx0K9Pa0n5MrDIvXRYFjIHDJNEniWWajZotvCXQaKOY8SGnaoG1SJYXGwEgp00nANnFq0ad4iaqGXrSWkMNaoWUZBKjAs9VjrRPhp54njmCHlWmFyRORY7XZqDF58BZhRxtl5TREhpOnyKWJYlIaFMSykv2VzCxgals715tEs3DCiLiE/w6KfCWlyVLvkod8tvQJdtWwU440aju4IUKdY4rPsmHolZx5X96lGnvX3/vNPMDHTxrv+6X6tXyErblF0SwzQWhTlzwh3CT22/QAONdtYPFLDi49ekl/D/Z0Mo8UMSyt39SweqWuGZVIZLB6GShkseakB+70xawmVS83vdAmx5qVaQoCtqZHOoYhhqcWxyao5EsfR8gx8oUP1La6+Ukip+Q0NS2T+CxDRLRw5iYjoVhnIebXm1GZ9eaFEoERYc8F7u3ikZoTcu/qXta+ZSXVvXOMxNTZqkSOAgCy/aD0hWkvIOBcxDws1WPT7JCXw9GHY8rCE4ocFoHVpXDDzsBSLbulg5DJYJNEtwC10/X2ZB5BmulUvXD7BkMYy6zv77HIJcWq77AugXEKAKdKsxXqClXQtuUuIaVjUtaXvEe0KjRJy9besS4ge15U4jl8XFZZOU/PLGhb9WbKN1WSTCydJHZN//v2LMNVs47P3bAZAVlGCH59Ho6gBtk5y76RpiuXj9VzEmqflZ3VH7HMwE/kpkeyBaZNhue/pPQCAlx+3vDMpZN+rwdSlYVlCNCyTpBijYlhyDYvLZRLp51oZYeOMEQO08WBGCRW4hErWEnIyLLxYZtucEJttPUn6ooR89cVyUbvBsJht0Im4qI4Q3Z8+s/RK5QaL4BLKwpr9oltdS0i3zm+Fuh50cqX3Q8506zdYFOPiqtZMn4c8JJq4slwuevp9LdZBFG0agEB2HcvDmnWED3+GpGPRe0+TLqr3pozmUfXR9/dsIzAsBaB1TlzgheuKNCx00nAyLKx2iwK30BXKZrpVDzKvlsyL/EUOQ82Vh6Xsg8zzrdAJLnd3kBVTPTdYSFgzdfmQQokKNHzVpWGhE0nZd5AeQw20fAWylEW4qIGwlZCwZilUskDDovqort0MYVHWHLkIJ61amveJuzQAwrA4XHx0sktS4EWkoJoKDaZshDQeZ8++HnQVw6KYE4WfbjsAIHMHZW35r6GCorYnptt5TaHFI3Uc0UmBvmdiBmlqZ41ViKDvO6/8TUHdj0BJl1APeVgA28iiLGyukWB5WOw6L3LxQwXtEtIaHW6UcC1NEWi6f4WUNKGOSbtChdmuPCy5LkW5hKCfTX4v8nBgB8MiMUVF2iJdekMyWEzDbiRPZKmvXymGhTA4mYYl+15KHDfVpGkROMNi99EuYpl9VvNKmahSqe251rAEg6UA+eTqGbAMl5AQJcQr5NKH3SX+c0UJNQwNi72C9mGsbkYJpalerfAoIZ1y22zDlem2rMVOj5Vl3Ox8R4wMw03EJugyolv6t9Z6uBmhsjSnGSUkazmWj5vRAXl+hyQVI7IUWgUuITVg82zA9Dxq3JgRVtucYaHUu14tp3kyNkAbGEaIveQSSsxcEi4Ni4IKHeeTQpkooclmR3RLNCytJMXeyaZRHoCChsnnBovkEmprYxCQhfQcrmeIf+16T6fZwsV0OZiCadU/adHgC2tWz6pL0Jr9Vs1g4e8s4NKw6GMZUUKinsuu1qx29yXxqznO3ZfpVoG7BkcLGJY2Y8DU94UuIS66JZpCXuEa0G5YWmnZp8eTvqvHmsnyFUeUYIfGB4NlqFFzTNwUxan5uUuomGHJKWsuuqUuIWM1VZJhIewG7SZna7SGRT6X8ZFiK18C1RFkyZL04MkLTdKwx7yoV+dvnXDJnpwBPdk0HaJbIytmNxoWR7QMN1jUcZttzT5IIkBDtCg8a1oLYJ6XIZZmbJQ0aLsSxxm1hJiP/qFn9gEwJ0hXlBAtZql85y5yUk0KvC2XhiV3Cc20DIZlrFHL2ZftB6by7ZexexFBX0depZciZ6iIi6xfolvqBpCOqUDHiAYRddLf+CTLDRY+aUbkvZP6lrVdINZhoG4zBdNg6Ryb7ENT89MJXJ1PK6FRQrGxfwq3nqiKhqUswyK5+nidJyq6LXYJmaJbU8Ni902Ns1NNdx4WyegzXWKx0UdAZnklSM/vXCIYLAXQD5TbYjH1B+5MjAp0UOBVfRVcGpaGQyxarlpzzTAK6MDCU1mr55IPDi6XkGvA5mMijQygNU2iyLbeTQ2LWZsnJi+6dJwam9h9q5Kyiwa6XV5LiJ03z79Ai6rlYZDCtWonKQ5Ot5CmdtE7emw1NuUDuuAW5MYdoM/XxfY1WO4dOmE+uNU2WKRrRn37UVRcWG3MoQNyGSzUJTRBwpoBXWhu+/7pfHt+L6ix7NJiAVKUkH7uXeO1s/ghH/AjWcjJDRY6ZqgQevVcTLGCfQqZW8/dJ/VnM7GfDwWpmrkPcqZb/TvXXgGmRk2qeZOIUULaMHKXrijPsPBT50ybGi/kPCymK5qOqVVcQllYs154+cKapz2ZbqX7yPVr3IDqlmEpoTwYKILBUgA9wLm34S9rYZSQwbAUuYTMW0RdGy6frQtGav7ENKw4hcg1LGnHuPDmYRHAXy7+gudukiiydBExGdxn2CSiJgItupVfSKlIIO9vaZcQ2ceVmn/5Iu4SsjUs0rXavHsSZ//JHfjAlx5yRAlF4vF4DShAZlhceVh0WnOzHAM1WFTKb2qwiDVWEjNMvShTqivNfyHDQkS3ymBRkULb92uGhR+f6qQUJIaFP2s0WZmLyXRnumVGQxyVWt3SMUPXm8n69bMdmYvuJccssfpgMizcYDHfGYlZ5AZtEegzo6BKknJdmQKt1izVLqIMi3qm6XFcjJ0Zxq+vsZSHRcqfZP5dE7dT/VeXiRqgVD/lMliMoImIFj+kGha9vTL6s0y3dioDQB77+btfRqgrgT8jwSU05KB6Cxe4/5ZPTI9tP4CPbfxZPhCWiRJyim6NsGb9fTnRbWxkVjQYFiNKKDbOu9lO8O8++l1cevP3tcHCw5pdBgt7USLoSI0209BYMf/EuJkiGhZ6PF13CNa+FHw16sqK6YOYmt9iWMzJlg7CuUvIca9m2gkefGYf2Y6wQEIfANlo5cX7aFvKWP7nTc/g6w9vIxQxTRwHzLTs552G2IsuoRSGH74oU6r6nV8Ol4ZFuXj2HWrmBovaVtVu2dExWBo1XSQT0JOAFR3iyTVCz9GXpTg7B/n7iDVfi6JSKQBalIXI39nst0c6WYJfcdwyYx+arTjrkyw0l9yJ+XEruoSkPCySawMgRgc5tyjSq/8xg2Exhc95S16GRX8287DY58knXv6squdCYimzUhV6fM4XtVR7U8IllEU8alcNZSd1P7To1lWtuYhhoRoW3z4S5n1q/sMNNDeFCwkzWGhCoUNJ9mB/5I7HsWLxCN7+SycY7iWXS0gqfggAI+Tl862mJHCXkEvDMlLTAtg0Be59ak8uvFRiTF5LyPWCigwLoeWpXsUe4EiUEBOL1djkXORr5deRDuZl30EpcRx/7y3RrYoSams2yee+ownmanFkiYr5AMLz5wA6RFbMw5KkeGjrPvzXz/8YAHDWC1fkx1KbZ+GZ9kp7vMgllPBMt34jWrFP/N65ooTUtd1xYJpoqZRLSP8GZIM6ZUO0wWe2Ka2+FaTweReT6freLi4YOVkaIFuBT7cSQ5tFjfOpZhs/69RhesVxK4x949iciHmf1E+SYFtByrDrgy8Pi72IiLJyHIRhAbJ71Wy3SUSdrq2Ua1jUceDRsDjOXWRYrAUNY7JrtkuoFkc5E0LD6vWY6i4FkrfrYVgkQ0+NH4c8GpYiUfFIPRbSOpTjKkJY8zyDemG8Yc0OlxB/sHZ1BlO6iuHRAQplMt1WryVkGiy033QSpVlP20mKB7bs1f1tycyPy/K2w4mZS4iwUXakj77+yjBR/czbUC4hdlz+YvEiX91ECdEm1SChaiMpcKGnWiG1E0Ije176mbYj/FkxBKyvdLBSRmueZM/BsNz52A59PJLfJo+KSeTQ4DKiW7pKdIXwKow7XEJSpVsAWLFIMywKqsCi1rAohiVmhUIj8Vi+PtL75AopVXDl8pFYBt/iQr0vKvycCjOTBHh8+wG0kxRHLGrg+CPGjX3rxK0HSHlYtOHj63MVaCNXfyeF5wL6HaWp+bN+M4YlFfKw5AsoT5SQwJpSF7RrW8Aep3wMSztJ88SFi4jBkqRpft9KMSxMw6JcaYbB0iAalhLu7bxtOp7HsfXclg5rtsbkYLAMNUoljnO4hPhDol4C6ieWNCxpmmJbZ+BVA7ECV5krlBPdmonjTJeQ2RZ9Ce/fvCf/bdoRveTybdqJsugATKKEIp1AjPZJfaeOy4uh0crOvv7w/roEej5IYc38e8tgoXlYUv+kB2QGRCowMS4Ni0kxdxgWKQ8LKX646Wl9Pw+RRFKU3leZdOnhCjUsqblKLBTdNmSdgKvSLX8XRutxfs5aw6IZFjMrtPlv3obHJWQYLAXsWFnROY2Gk6AWJDRXCmVYVNHIlx+7XFz9+lPzo9O2W8NSFWIellReRMRsLFV/v/LElThuxXie+6fVtmsJ+fKw5O0Lz3uDLL6kfufbM3eaMmRNjVicn1/OsFCXUJLmouWyeVjE1PzGwkgZNHpeKRPWzBOBltG9SJDc9HOJYLAUoFRqfkdY8wgb3A52UpQ3iT5Acglt3z+NvZNN1OIIJzJhnSusuVwelppRG4nmEuAUar5ySlLcSya4PAcEW5m6HmTJJUQHrjZZkUtGR+7myIWkauWTbdNsyxoWPhgv9jIsct856GTAa4IouPKwFKXmV2i2E5KvxXZbWS4N4iLUEVWexHHtxDBYVLRNnbmE1H1+zUuPts5F6gdgislrUVRCw2KvYheN1Jz7LRqpGc85Zc0UK7Ozw2KO1MwcH2rCK8pwSkGfIX3vqolupcRbPoN1hLhFADuq7pHcYFlmtU3vodRXHhLfD3qfuo6VoeLSsCgLRj0m6te/ftvZ+M5/e20uqs6quJuMqmoqS+In90XKdOtyzdgMi2lISmHNOt8KDA0VfW8KXUKMIVfttxIziaY+pn5vndWahWMVRQmV0TzydoDgEhp6VBXdZn9n//IJeGI6mxyKagk92onKeMnRi72Zbqu6hMZHarkB1mynuPyTdwPoFLVjk5tq+9l9U3lROQouZHNRhXxwpj75zCWUfV+LI5F+5JOwevF42LK0kqWg9TTo/tm+1VcbdNAwGBYrrFkPOAq+e0UzXkpuqzIuIam/6rdHn9tvVE/OU3XXKMOiB97XnnxMvi3VKUjXjOof4qg4SkitYuk5cRaFIooiLB/Xv9N7emRnvx2dPCyNemyGj+cGHzdY3H2kt8lXVgGoFiXkZViI5gnInq08hL+d4uFn9wEATj12majbMhLHsb6qn3JjqA+jPz2eejxcGhb1J03Nn/UrMpinJKGJ45TrVR+jSh4W10KOjzV0zAOowWK3305SHGoKLqGk2CVkhDXXqIYlyc/LdOup8UPryiz3ToHLi7ON/Hcf7OKHwWAZavBigRyplHel82CdtGoJTnmBVvIf7CS7MqOEbJfQo9syg+Xk1cus35xRQsLkxEEZFgB4fPtBrFjUwJ/91iss90GRr7Ksb9OOEjJffJo4jg+glA7nrIEajLUGgxlGrK1Fo1x0Swb2HjQsvK0lZMUF6AmRpjz3ue9mWkk+oNN21SdrVW34xNmgJAx8923ea2yjDBY62VGD5SVHa4bv0Y7wGpAZFvpcR7FcWJBChzXr745a4jZYAC2uBcwaKSo9v+pDoxYb11l9slxCPoaFXM8idsydOI63KVco5v2heT4ow7J59yEA2X2RXELG6twRJdQSosgU/vL/Ph0A8Bedf4tA33vFDCYOhoW7hLjPiLqrLZeQIbp1uIQMhiX77KrdxE+d1ygbzd2V9vuVuFxCaQmXEGNY6vk4Zhr7Co3clZvkjHgpDQtbgHbrEpLyCM0lgsFSAJqeW3pRJDtGDZpj9Rq+9u5fxocuPQ0AcLBTBI5S55JL6NHnsonh5BcstX5zMizGSlu+raNEw6Lwh+teisvOXWOl+S9afVmWtuM5LpuHJY7kAY7nYVEvWp5ivW1+r8BfLEt0S/UhJd8Crryn50S3oWG5NHungs99N0MSSEmiUc5s0G0s2tcYbOVjar2VGdZM89dcds7xAIArfukE4zw56HMdR5HlNuSQXEJHOvQrCiuIwTJOGBZJ62W4hFwMi0/DQjZ1rW7zbR0PERdlxx6XUGac6BV11q5Zb2bfoYztPGLxiMASmC4hfo/Un3nkmXAPLzt3DR79k9fjzeeuEfvIQU87yQ0WW/9E/+YMC+2/2r/FDES1ZVnRrWZYyrmEGiS7NyAnjlNjRpoiz7S8yBEl5HrHrcRxhGFRkBZG1Igrk1PFZFjsZ67bWkJzLboNYc0F4H5sfqMl5qXNMkkuzRNedRgWso8UJfTTjkuIsjMKjZrLYInYNma7UZS9hDxs8YSjFlltNWpx4YNpMyzydlLRQZr236gbZGlYJB9q1p4abLUYlzMs5n7jDeYSEtwtRaDGAhfP0c9LRus40HG7SC4Hv0tITjDn1LAYTI+bZfLpJtSxtB7BTID1Z7/9CvznXzkJL+w8K1l/7GvWbJuDbhxnYj9XQT0pcVyRwUJdQlSXxPcbqUViRB2/1yM1X5QQZVjUd/Kz4ru8KpxX7e9qo05YxnaeXyjKtR07DkznxsaK8Qb2TJquWu4SciaOS9wMC1CcoVhqE9CuGu3aYO9z59/coOFtEddXPoZyDUvqLvUgGWsuLYnkWqVjhnYJ2UZQmzIsI3XRJeR63+zU/LbLWNKw0GrvNsMiaVio66n7sGbbpVlqt4EhMCwFoA+xFCkkWftqUFH3Wq24DyoNC8102zINi6lmG0/smgAAnCK5hAyxp/6e0r+SxT1aj63MkoCuymu4l8oYLCUtb4mS1dWaTYGej2FR4BqW6VZ3DAv9vXSmW2Eg4d/XyAQDyG4R3+omTU23hu5jp31hZehqV4oScoEO2O0kNVaKjVpsGCtZfySDxaa1XToWmsyK9tMVIaRAGRaqYVnBMgxneViIwaf6xW6HP0pIf9Yi0GoMC2A/H67VN9VRaJ1JhBUd9ujp5yc620XGyt7cn/aJLwC0QSD93g2k5HpSET+6bc6qsktGFzI8702e7wXymBtHcg6asmHo9ZiLbu0INlo1WxXfXDxS0SXkYFioUS+5+ltJkhuatvFRgmER0kuUQcjDMs9Ab5CUtVpmWEzKU/naD063jPA1QIeVKvx8x0G0kxQrFjWwatkoOOjDarygFsNiwhVCetyK8U5b+rsGo5YllDZYPInjeLp63u04sg2PXMOiGJaWXC6d98cyWLpgWExtirlS0p+BRYbBYk/YRWzHlFBRVUW52C4hYqg6NAvSbxymhkU2msy27e/MVWL2LzXYzEJ3csSRKwdL/rthsOg2Rus1w1C0XUIyw+LXsJDFSpcaluzY+nMcuwf9ei2yjIo4ytgUAHjq+UkAWSQarTxN25ZW5/nvnZ+ahL3pFbQJNa65NCx5lFCeO0l+t+m4kItuO9vQCvPSvgrq3ktZbgF7XOGsspTJWn1OUz1uLxqpGVFCLRbdxGGFNSsNi2Ds0+1nWjqhZNU8LDwnUaMWiQypBJfROVcIBksBDJeQ8KZI33HB2NLRbMCZmG5ZCbm46FaxKycds0R8qKilLCUGyz7bt1WtdOk+y8cb+YvNB7qqDItrc9uy1y8pLZYXx/ZLVIvtNOZ1ZrBwbUt+HPb3olGPS6jkWyBlugXYCjqOjCzA0oRYtEpRuqa6xLCwXel974lhIavzpMRKUXIn8CghwGRY6LWghgy9rsUMC3EJMSG1Et4CnSihEqUNvFFCzB0MuLUJvveFi0F97gLVPM10q4y4zR2GRYXO2yxBbB1L6segGJb/+r9+jP917xYxPJduK9XMof1pJ0JUVv5sQtR4ufQwZQ3uTHSr/xY1LISBdLqElPbLKbo1709elLRlG/v0mHSe4G0XaVjqccRcx+Xve5aBXP8dDJYhh7TKopAy4LZYqG3OsEy1LA0Jdwlt2Z2totYcYVLwCqPOKCHZJaQGNyVKpIPcmiN1pkyuhyl6MLm7pgrDohMtmSGQUqEtboioSdyOHuKrDrMfi6zU/MV95zBWPo77wBOm8QkxEs6TQ3JzSQwBLVLJt+d/F+VdqJF7nqZazOyaoOlx85U7E90CJpMyYhhyJAmdoWGxWUUKmueGh6pT4e1IzUyB79IAlWVYXHVcFHwGIY9Ic6bxJyxXk7C06pyf2ZNFCKnkhBL7KLkTFPh96memWwC4/eFt+G///BPsncyCCyyCpfM3TxynoA2WxKooTdmYJLUNLpfrwqlhYduPcNGtlOmWuoRIplvtEkKlas1Zskxbw8L1hIA5T5TTsJht+JjYIviu82wjiG4LQG/QNbc9gGXjDdz45jOM1PUcLeYSyqvMzrSs8u3cJaQGpeOPlA2WhqOWkORrBYDTj1+OX3vFC3CqIOA9foU+Bn0OMz2DeHjjeLU4MkrFS5CKH9IVSe4SiuSwZtfKSX0/05InViuCopM8SaqjUlrDQjVDDpdQxrAQg4VpJGpR5GSjFESXUD7hyvcZEEK7DZeQedClo3UcmG4Zv+cTSlKcAMuYGGuZsLZl0NrZv6MOg8XFsBSJbqlRwt189LdGLWbFD22DL+uf+0GX9Blu0a37ppouoUicYACzAGX+XsX6vNS4ovQ6kg7DFTmY9aNjDBXURaoC6d350v1bO7+Z36s/eWp+BYNhsTQsejvlmm/EMaYgC4jVfq6wZml8MEW3tfx73r/EYFhq+RieJCVcQkTkHROXkOROpf2nRH7Vas2NmhnWXKb4JkV2j/U4PZcIDEsB6LOw8ac78MX7t+ZGBQAjU6sCT329pFPMLUmRR48oTDMD5pk9imEx64Qo0Afe5a/mn996/gtxxpoVVlsuhkVyCVkrGLZSdE36fAVLGRZaUj0WqPJYWI2qfuRFEYWsrqo9vp+xqieTRsmkj2aUkINirTGGpVEzhZCS64tDRY6ZDIvaX29nhzG77xmfvFYuHbW2pRoCdV/clLptDNHQTHWOtMKz6RKS6xJ1K7oFTGOnUYuNlaQ6BL/29D7yiYD2scU0FRy+gdxYWEQe0W1N1wJqklwpRzBBsWJcrHeyFonuBN4PukjoFVITt927xTiedXwHwyKFNfM8LACJcjJSE/Bnv6NhcTIs5t/12Ez5oJ5VKerKyHQ7Umdidb9LyHDhUpeQQ8MiGSOWwSI8T2aUkDm2VjVUpYXTXCEYLAXgPjwAeZ0fQFv7NbKdLi6W/Z0lF8o+81BEnuk2dwk5GBZTtKW/pw+tK+SWgx7DGOgEl9AKlnI+jmWXha+/6jjaF8zydjC3TRxFqDlYhDysuWXrPQB7MI6jyJgw6eZlBWhlagnFcWSyB5E5eNSE54ljSkiGJ4XlFlVt9dWa4oYBjQyjEQtcgyS1XWODLj2/sYbsHjOMAbK6LBLdUpeQpWFhDIuUOI7PI5QB4hFNtLhgmhtwUacdv0Hv+s0b1kySl2nRbYTlLoOFLyoizrDwdyD7V7uEnF0uDZ5nxjxexLbN/s0rtDu2byWpU3QLaA2M8V5ZruPs77Kao0bNFDHrWkJ0otcuIZfotulIZKkwwpjZXItHGRbaL+H948aQ9DwZDEscG9qZsiHNUltz7RIKBksJ8JukWBCAhuhFxgsHmMm+FndWg3tJpVnATBzXTlJs3dtxCTkYFpfQrBHLFrTPmr7gRUfln3mGTP5M80EzU7jLOg5XfwHTJUSV8TVmUGR9cusyisKaJYbFVbyvGw2LFCWk2qQTcxRFFq1cZCApI5a6cdQnn0tIYsHybRnbsIIlWqNJxyjrVyaDq68f4w6XEP2eVl9eNub3UlODhhsYR1LRLVtVlokS4u298MhFQkbU2Nov+97HsJDPApOY99kR1syT4mnRrbk/17A4RbdCnp9e4Hp/7K87DIWjYGkuxidJ0ngtIWN70v8xS9ehDJZihjA7DsvD4qnWTDUs4yM1Ixy7mfi1X3ZYc/a3MoDiyDY2+HlJ4ewcRht185mret+HyWAJGpYSoD48ANiyW7uEEkqvRgCgiwrSCWPJWKYZ2OthWLbvn0KznaIeR3jBcodLqG4PwkA1huUr73oVdh2cwctW60y65gRkMyzZoDlBtpdFt1TXAtiJuaJIT/CG0Cy2Q4Bpkjl+PrboVl5N5vtZDEtk/FYGrkRsqinVDk+8ZV4nt3GnoJ6JWLi+Zn0gzrDIxh1gPh9LRuuWdoOG1NJnssyAzydr+ly6RLeUhaJGfJExt8JgWJjolrmEpAKXVuI4arCMCAYL6JtvaiMmif6sikuIu/oUe5MZs9lnWq2Z55hRBgufqOpxZPSVT3ac4ehXxEctitA2jmweT0GdtuRGp/1pJUl+/nmmW6Gv9LnjBvgLlo8BAI5dIY+jdj4jzrDExvHp8RIe1lzBJcRrkKk2VRHS0XrNyjrO+y3pb3znx1PzlymUa7RFGeQ59gkFg6UEvAwLWa0oYZ7Oc6D3UYOrUtArTDUTpGmKKIpyd9CxK8adlqyzlpAjrFmacF5+7HLrOy7WK3IJ1eLIYADU2MgNFqlIoupqs2W6hPiqla82ACLCUyyNS3TLJgWVdVW3Y+sbikCNMslYU03ylPR00KORIC7kRljHfZSkIMX7SLvsnJewCVwqfghkBRpHuauNrO6pEeh6Do1+WPlf9OcxR1gzdcXwd8IHVbG52U6LRbfGOdoGXxyZk/po3Xwmjl0xnk0eRPGo7iV/Vn0rT3q/45i9q3FsRGRZDEuUFZGkGYNVlJBllLN3j4sri3Rp3aKqS0h5gt1RQjYLVMSwcKPujacfi9XLxnD68StK9S1jle1FH5/4gYxJmSAGS43cMx2OXewSqsXaqFaPmCXSF8Y/SWzNYVdr7p5h4e/MXCK4hEqAW7SUYaGrBZ7ngFrK3GChacXVBKHEvFQMy+FiT1xhzWUfTroVX20AwNIxu9oxHRBV2CF/eaywZsgMC3fZAKaKXkENBK6U/fm+bFULmJNkNy4hV6hkzvrkDIusu+HHdUEzLLYrw9DRsH4s50alw320dKxu1ULKjJPsb1XuwLcScxlDtK8ASxxHGRZi1F31yrUAgF8/41jn8XRfdeZXX1hzRoObRmvWN719vWYKLSnD8oJlYxipx9YArZ5HO1LDPZQabprIDLemzzftT5PkYYmiyFgwqM9UXxdH2d80msTFsNC+9AOu98clunWl5qdhzT4NC98esA2WWhzhghcf5SwzYLjpIqUn0d9JmW7VvWonVMOi87BMk1wprnfHNBzs8YAvdqJIzqHic/0B2UJh5ZIRHLGogcWjdUMLU1nDQsfS4BIafnCLdgthWGhlXTVYSLVgVD0hJbpdOtbIrfSpZhtjjVrerisHC+ArfmgOfPnnsgYLm9wi4+W1y5PHsZzngh/Pp0uhGpYosl/WOLLZCB7WrPvsXj2q+zdal69L2ZdQbebKNKmOww2vqgyLShIVdyakNvSA7ctkWq/FWDZWx/5OJJohuo3dBotOxpd9p+hpX0ZeX/gs/c3QsBiZbvXnl65aigf/+HUWQ+TCb5xxLO58bAdOPdYM1adRQiM8063Ub8Yg0b4qV0LEnELqmjQ6ET15aQnPHMAFypIuQn3O3SYkrBnIjLEdB6YBmIZpLY6QtNP8/tJEli4Ni9SvXuBqhj/m6s+i1Py+as0U9JmmNabKQIqgK3QJkZwpihWjLqHpVrEr1WZYzO2kMPt6LYLyPtLEmUnbNOr4+f3rf/5lJGmahTV7EkwWQRpL5wrBYCkB/uI/t28KrXaCei3WRc2iCO2o4xJqSy6hbDBUGpaxRozl4w3sO9TE1r2HcKjZxvd+tguAW3ALmC8CfYfpaqqbrIZ0M65hGR+pmRl2yUuj9+8wLOxFtaOEaCQEYViiyHpZ48g2gPSxIX5P2+Ofnen0S76D6hyl8GvahxeyCC9DdBuViBJSDEukdCUpiRLS20mruCMXj+QGC6eFFZaONYxnRA14asJWNa9cfnjeD36P6HNpuITIZ27ULR0zV8g+/NEbT8UfvfFU63sj062lYVETn9lveorUYFnd0UDweVJdq3qcsZCt1B/uTI8NKNGt/tvUFsRWrhT17FIGgQrglb4uzxEiuK/0tma/Bs2w8G/VubmKI0o5SdS1kt4ZU8NS/vkBzPdfPeeRYLBIxiXNOjtOooSoWN1psDCGhRsPUiJDWsw2L/7aue+KHZWgnmHen6phzfTRnus8LMFgKQH+QLSTFM/tm8KaIxeRlVCEOIny3wHzRV6cMyyZS6hei3Hy6qX44ZO78cMnduMT3/4FdnZWUC6/K2CLthQM0W2BhkWCufI0sz6ON2qGXkX9JokabTGbzbDk2TyZS0haEUriOOk4vighKXqHnl/ZsGY1qfK8GPm5d9q5+KVH45r/66W5qJlOZmXysCiDYZS4JCLh+kr3dsWiEaBTc8aVh2XpmCm6VddOaUJUriB/5Iu7H1UZln7Bp2GJ2D0ClAuG9om4hFwGS009+x3NQ4mIG8slJBiLqg21rUqNEEkGC2NYsnY6Bgstj2AZkrLx3ytos0ctHsHzE9mizKVhyf9m7Uhh9TnDIjiFDA3LeEWDRRg7qf5HGdfGYkNgcWmGXL3QcF9bzpDbjLRUe8w2mvh9L4LBqJZNPNVBEN3OM0hW5Zbdk1hz5CJHHhZtxCgol5CKiGjUYpzygmX44ZO78fd3P4WdB6axatko/urNZ+KiE1c6+8Lj+BVcESGlNSx05ckSUI2P1ETRFj1OLBgxvL9ANkhJYc1qMKXiwkgwWNQEwzUrfIU7LuhV6CTdTajeiccswV+86XSctGoJ61NnFUjo63f96knOYxUdToX5jpO031JYrpTF8whr9Z2B3pelY3UjekvdRzVh67o5HtbA8bxlx9WfXRoWVxXnXtCoxXkGXyusOe+beS+kdOwAsHo5dQlp1MmzX48jqJg/r8HC7r/rXTVEt6zeDzXGDINFsXskgsXZj0G5hEg7Ry8dLW2wuNy9Zli9Yj/s49KJtyrDYhiuQnp8MXEcu16LGllET8z67TMIRhjTwZ8bN8PS6bcyWBirW4S+iW7nWPUaRLclIN1gpTdpk5TdNCwP4C6hzGDZ13EJNWoRTu6swFUV1l89ZZXXWAHMBz5NzQlfKvhV1gI3JkIWJTTecLmE6ApWfoG4W4GyJnk2T7LPmLECcTMpfPHPJ00asq0ZFvm6VHl/33zeGpz1wiOM7yRBrNRntU0Rw7JfGSwNYrCoYzmMVAU6sdFLb4puG5YvHbDDesu6hHxVol1RQlIV635AhTaP1FniOGXw0WsSm8Jxeh6KYeGXmK5wy4oRDZdQZGq/GoxtUfeXjyHKDTRSiw1jL2YTmFQqRB/b/LuilMHTrmmwKNiMSoEBIxgsvutKf6uqYTHc6YIrKjdMDYG0+ZwvGjULyiqGxffeWNWa2bsjvRemPlEtYDp9L2lBcEOpCiT3+lwhGCwlID0T2/Zl7hsqjuP+Z69LKI5wCqvvc95acyKUQB94XkhRlQCgET1lBVYpERbWWTr58YbJsMT5y2JP+oUMS6Qfepp+XIHqHPjgDthsRt5nth2tnaTug+ES8lR6rQpJ02P0TUgh7jukqvEz1qhZKfkNQ0EYGGkuEhcLwkW3asDmYcJlRbc8dN2Vh8UV1txPqPPPXEL2RaZ9q7FouFotyhPXXfCiI63tAT1p8TBY3yRguIRiM/KNsy08fb76Wxmiy8Yb5jmwZ48uYux+mH101TSqCnp+Ry8ZJd9Hzu2k33MxvpC4UHpH6f2tzLAIrlU6nkoLMH6PVZRaHiWUMyzuZ8FkOmJr29IMi/q35PhuGMZVXULGOD8PDZabb74Za9euxdjYGC644ALcc8893u0///nP4+STT8bY2Bhe8YpX4Ktf/apz29///d9HFEW46aabuunaQCBZlSrTYUJEt+q+ShoWZUQour9ei/HSVUuNievcE44s7At98Phq6s/fdDr+5DdfjlXLtNiq7KBEFhdGinCg4xISXChdiW5hMyymSNPPsOQalgJ/PI0gUcehbfN0+r1AG1Gu3+3j+l58NeeMj9QsV4ZpKPhdQobolvRhUSevB+8/d9NwQ4TCVVcp66P+PO5iWDxVknvBCR3B88olo0w7lP3LXQHGxBVH+O7/+yv44ft/FUd1Jl5+BdQEwzVX5RkWbqSYK1/1E1/0KI3G8nGWa4e5Yn0uIf7IVZy3PO0ShmWZh2HhLiLWDo+2iSK/gU/fK54NuAhSuDIt3sl/458B/Wyrvk0XVGrOfqPPjBBVKWi7pCzmPWlYqjIshktonhkst912G6655hpcf/31uO+++3DGGWfgkksuwY4dO8Tt77rrLrz1rW/FO97xDtx///249NJLcemll+Khhx6ytv3iF7+IH/zgBzj22OJ8DLMJ6SYpYSQV3fLoF4NhYTkjGrWsSN6LjloMAFi9bMwbHUT3U2iyF+ySl6/GFReu9a4KXKB1fUZItALgdgmZzEHnNzayWHlYyCA007IFi5QFiWOfhkVenSkcQ6hpZSSaxQ/NSaQX5KsxhxHSEF74MsekIZPccAFk6plm/HSJssdHakbiOHXtOB3tG3hp23w/w8XnzHQ7GIblg288BZ9429l47cuOZrWE7OvONQS1OIvcowY/v6Vq8uD1tsoYLHGkSjUQXQ9LR8DdyqrdF3TCrGnkR/Z7518lHK3EsPRn8qHPAmVYikS2lgg4MpkKo5yEcFxf4rgiSC5N6hLK+8SeDwrFSOr8Mf4st0Anr0oegRRb90AU3dbtPmhDtdwULgl3y6KIQZ5NVDZYbrzxRlx99dW46qqrcOqpp+KWW27BokWLcOutt4rbf/SjH8XrX/96vPe978Upp5yCD33oQzj77LPx8Y9/3Nhu69at+M//+T/jM5/5DBqNag/foCEzLLqkuNrGzlKpt+dpxNWDdvILMq3FuWuPKBWtQrehRgYFp6DLwGBY2D5cdKvDeEtoWCq6hEyGRaqbIR9HSg+/lF1zV2r+nl1Cnd1dqw9z0Ov0TxyCTYw1JNGt/l1yedCVpsslNMYYFjWBWi6hksnQVE4S/Rs1jogbyFH8sJ84ZukY/t0rXoB6LTYmDtUl7k6RVtoU/J1UGo2MwSFteZ4hPuC7GBZJdKuafdWJK/Gh33w5/vjXX262zYzlxGewsNvZL3rfcAmRhQIN/wUkxsX8OxfdNm1tmzQ20hISPGlicZ/t+85d7IB5X7noVmm+yqTKp1DPZS22FwVS9Fzdw7B0I7qtmoelSKM3m6hksMzMzGDTpk1Yt26dbiCOsW7dOtx9993iPnfffbexPQBccsklxvZJkuDtb3873vve9+LlL385b0LE9PQ09u/fb/w3KNCHQmWozRkWIrpV97MtRAnxom7qAbrsnDU4euko/p8LXli5X9ILBvCQ03IPWStxC90yDYu9mpSEq/xl8LmEdOim/p0mj+P0OW3fNmTsR5kKbwGIobzZcXo0WGL/C83zsABymDIHrfKda1mMeytpWOwIEsA0Psa5weJiWDwuIR754soPRI0UVy2hQaEocVyDZbqV7gX/6ldOOQaffPs5+MAbTtEht5GfKo/ZvXNqWGKtHWsxt3ItjvD2C9fipFXmM80LbyZe0a3Zx/6FNVOmQxvMBzvh8dJ2Un9y5pXVEcq2tY97gLRf1QCWNCxFDAt3dyvWvKhqOkdVhkXOdGs/S2WOqY5bBfQ5n2tU6vmuXbvQbrexatUq4/tVq1Zh27Zt4j7btm0r3P7P//zPUa/X8a53vat0XzZs2IDly5fn/61Zs6bCmVQDfbGOXJK9kBPcJUQYlqbgEuKJsZQB8NqTj8GPPrAOF73EHx0kwRURYFLV5W5xktqCM4UxS3RrGw2lU/NHer+m5BIqYFj4C6sgvbivON6smWS6hGwRcbeQrofRN5aHhe7jO/Z4owYezuwrfgiwKCFB7At0XEJ1e8VViyMrkZkL9PJHEQwXkytKaNBhzRySUUpPyQoxFm4GfxcacYzXvXw1Vi4ZzRmLIoqds4/UeOQrX82wyEU9OXg0i1/D4jcYugUdYqg2SS3q9PF4f8y/1bnkmcKFKC/a1v6p8jWoOKRFnTSeuoxLQDOSnD0vNFhIZl2+yJFEt1IfaO22MjDqy1V1CRWMb7OJwS9zCrBp0yZ89KMfxac//enSCbwA4Nprr8W+ffvy/7Zs2TKwPtIH5sjFGeWp0urTSqv26ki3wWvxVFVqS5BEYqov+XFKPmSutgBPHhaJYWEGkpRUTOdhkcKa9UQm5WGpl9SwAMC7f/UknHTMEqx/7YkAuEsI5HNvL6IkiHX1TVefRedfD8NCsmhqhkD/XugScrS95ohFzhUXdQuV1bDEUWRonGgfaaj0bIQ1Uxj9ZywHoESuJsPBwa+glPWz6Plx5c7gzExW2C77rEW33qYthqVSWHOfJiCXgcoNFu4G5YcvU9SPHvMAY3CqQCpbIY2BPgZOPdu8pEQRq62Yy1qc9YM2WzUPS+mwZoc7vAxc+sS5QKXEcStXrkStVsP27duN77dv347Vq1eL+6xevdq7/Xe/+13s2LEDL3yhdom02238l//yX3DTTTfhqaeeEtsdHR3F6Oio+Fu/QV/IoxY7GJbYnfQJ0BVWFapauRIkClP1RaHsw+nzfbtcQr980tH42kMZU+bSsFi1hKCvp44ScjEsbpeQK2U/xYpFI7jjmovFvkj6m25R5E+W9DKlGBaSOE5iceRMt/o5Uzorhc/+hwuwe3IGa1cuxvb9U7odyr40atiLbOXqz8NiGqsjLobFkWFzNlxCRvFD9S/TLriSuEHYHuDspcluuJC7hNT2JNKNHlIS3RaxIHnW6U5D1cKa+2+wSFEuCraGxW+g8P5FEandFEV5vqJuIAnSm4Im0CwgavZHMSt8MVqaYckF3DpZphTubwhmVamCgjHH30Z3LqG5jhACKjIsIyMjOOecc7Bx48b8uyRJsHHjRlx44YXiPhdeeKGxPQDccccd+fZvf/vb8ZOf/AQPPPBA/t+xxx6L9773vfj6179e9XwGAvpQHMkMFjXpNmKd8ZCn1QYkhqX3m+92CenP5TUs7oFukSW6zf69/Lw1+OhbzsR3/9trnT5VKTW/GphE0a2hYXGLbvnLU6YEAR0Muk0cJyEueKGlFVKuYfExLA0d1iwxBNI50xUuH9AvOnEl3nh6FoHnWnFRV43v2eEiW179OW+PMCx0MpV89f2GqavRq1oFmqgt+00yWMy/JYOl6PnhxrwycOgiB+iMIZHJlBQaLA4XqQSL0ejTitmlQbO3YwYI+93Oy2Kzs/SYvjGrCOYYmR1HsvXM0glmf17eSZ1gB1T4r+tIXgna3r6YYdHuJKCChqWXWkIlFlezhcqp+a+55hpceeWVOPfcc3H++efjpptuwsTEBK666ioAwBVXXIHjjjsOGzZsAAC8+93vxsUXX4yPfOQjeMMb3oDPfe5zuPfee/HJT34SAHDUUUfhqKOOMo7RaDSwevVqvOxlL+v1/PoCOqlwhkX5UZeNN/LPbcEl1KjFGGvEuXK+Ly4hxwtrZuAsdxwflcw1LJRR+M0zjwOgzzWKImMlJBU/jHODxb5OnGFxaViK8rBIcBU/7HWlqcYM19gh0crqG9+kYWpYsu/o5lJqfgrfCtSlVaEGhu8ZNScPs6CfybDo9ugzVrbGVS+oCwyLZHDU4gjtJBUHcnuSp5/VpOE/F557hzIsJuNji26Lnk2eh+U/vfZEfO2hbbj8PFvTZ9cS8jZdGi6XkHV8z35Zf5jBwiP/PPtWhakFc7dVE9gNhQtedFRnf3NsL3ovX3XiUXhu36E8caip4ZMy3drGBr/vReglNf8whTVXNlguv/xy7Ny5E9dddx22bduGM888E7fffnsurN28eTNiMkledNFF+OxnP4sPfvCDeP/734+TTjoJX/rSl3Daaaf17ywGDDrn5wzLTBtpmuY5PpaPN/DsXsWwyIPNsrEGpppZhlwf3V4WLiPDGARLPmTq5ZPAXULSYEHzi8RRlEdPSS+vakrRoHTwKMrDQlenFGWYJHdq/v4Mfm7RrX2sMhlvx0dq+bOn/P8+iprDJ0p0hXibDItHw8IYqhHGjOWfyXbUhVk0qPcDdcPtp/61r58yWESGxUonLxs8PmiBpH1crqVS7fOwZhd4H1YtG8MP3/+ropuTf9MvTUJiMGfm5G0cP/L/XcYlpNAzK8oMRRdcouylY3UjJ86SUT22FxnjH3jDqXjfv9NRZsUMi/3M5e7F0nlY6AKlosFSoNGbTXRV/HD9+vVYv369+Nudd95pfXfZZZfhsssuK92+S7cyV5BcQu0kxXQrwf5DGdOybKwuDDbmDV46VseOTkXmqrScBJeGpSi3hISXrV6Kr737l42EawrnrT0yr53E21dQp5pFS6li6PKgmEcJSaLbgtT8dHVqtln84tK2zRwPhbt6USi6lQYc4iY4f+2RuOep3Xjty47Gtx7bafRXGzidYxkDqP+cfb/T4od0AKMMy4jn2eFMA93WdT0XjdTxm2ceiwj6PRok6HklufZB/87ZOmniioTtXfu7wPNYqGc1iuxoFd+7IbbNdDFZu/I+rjDiXkHFqmONmjF5e49f0B8+RmbGo3aVXfLyVfj6w9vxjle9qHKffflVjO0cTKwq3aCwdKyOXQfLj+2ucGnRYBHzsNjt+GAaPV1qWOarwXK4wQhrJgPtxHTLYFjUs6PDms12qPC2Hy6hMhqWKoYRr230ow+sw57JGbzwqEXYRkSaMnWuH+pswHSvELXWx/bTj7JoE/5u1YUB2tUnDoNVoCvlHl/EomgRM4S6w6yQv//hP5yPLbsncf/mvYbBsohWa4Y9aEip+QHgo285E3/73Sfw/l87xdnnchoWn4CSMyyy6BYAzlyzAj95Zi9efdLR+PUzZi+LtVTGwhRbdkSPwkpXgYuLKUozLIxVa5D9eJQSdwkVi25VX4rHE9e71Ct4lWM6eVMUvWY2w2Lr3+jnv7r8TNzz5O6uUkLQpn1jMX1e6DN/3lrTYKGRQq730gWTYSnKdMuN7HL3MIoijNRizLST6gzLfHYJHY4wBvSRGsYbNRxqtjEx3TY0LFwwxydCmoul6kMjwZk4zlgVdG8YHb10NM9cabiEPL7+ODJDcKXVXi66bdmGHWVBIoFhqZKHhWNQxQ+ruITyTLfKEIkijNZrOPGYpXj42f3GPjSDbESur4KLAfnNM4/LtUUuSJluAZNh8Q28XMNiGCxst//9BxdhupVY1aAHDfpM5FE3AsVfNuLClUq+6NlTzfKBvxZFxiRMM92qMaS0S6jEI2xFPPVpAqLFCuM4wuJR+T4XJo5jf/Mx0nAJxREWjdTxmpcd002XC8Xr9DhKk0fH89e93IyKpedcOc+JwTDbfZEy3WqXUPljNWoRZtrVDQ8dVFBpt4EgGCwlYFQTrteweLSeGSwzmmFZNt7wMgcAq6Lch7t/wlGLCvvbr1WUIdqSNCyEYSlKpKZ+l/KwjLKVOm9D9YOPMaVEt45Mt70ynaov1VxCMP4FmPi1Y7jZqfnLDbRFcOl5yjIs3CXkez7iOJp1YwUwqfS2oAnhGgKRYSGXgP8cE8PDB5friWu06qyGV5m29btWgmGp2HZZzDDX9K+cvAoPbd1vTb78aJaGhRkoloaFtNCv7NSANowatQjNdmq5K+tx9n0cAV991y9jcqaFF61cbGyzZJQuRvvLsEg5k6rc97xf9RiYaVevJRSVe85nA8FgKQG6EhlrxFg8WsOug26XkAK/v8vGqEuo+5v/hT+4ELf9aAv+39efLPfXoL37b7BIKzMauql+dvnSuZ/eFWUQR24hnrUaK/Hi0kn66KWjuPDFR+GoJSO952EpMNAk0a06JN2HCrHHOhN8lO/X+dcYaLs3WMzU/A6GxTOwxcY5gdXtmfuBDTD7qETgZhixKeAuEt1auqmC+563wVxCI8QVxaOWLKOopDFUZhJyubR6BWVYAGD9a0/E0UtG8OqXHm18z0+lyIDi52QayV12Vji2ev7/+fcvwg3feMxypdY6BksURUYVeAq6GK3sEqIaFpFhsRegufFb4ULkz123eViG4L0OBksJcAtY1ZA4ON3KQ0eXjTXsF5A9TLSeUC9RQueccCTOOeFI5+9GNs6+MSzugRsAMVJskSGH6pMWQpZnWFyr4VpVl1AU4Z9+75cK9ykDif2goAMEf/ldmhSLYel872JkqqJOqG4nw1LSJRTH7ky3w4I8mSM1EFgSQul6Gm4Ix/tdrGGBceyTX7AUv3LyMThv7ZH42Y4D+XZUdJvvW9B23ocSz3+RC6ZbcIZlpB7j7ReuLXF883eXqFnBNIR767v5HmV/nLFmBf7hHRdY2+ooGXd7hoal4gtQKQ9Lnjius2+FBWmDabbKgmuw5hJD4JUafsTsgVL+ysmZNvZ1ooQkhsXrEuoT8yGhKN14NyiK46eiUElvQeEbmEwNiycyg7uKyjAsZPXS9JQiqArdJ/l3U8NiGipcw6CgUuTraykYOD08Q0qEB5jPYjcuoShy1xIaFrQETQjPaSE91zxZGUVZg4WHojZqMW79nfPwB695CXPf2i6hojmiaHFA4ep/r/Ak1zWPX7E/fOyiv/ba9aKM0dK2vud6CWVYumQwADmPjZGllj1zlRiWvOhitYuXRyQNwXsdDJYS4C4Lldnw4HSLiG7r1mBjuYT6HCXkgisUrxcUuYSoJoNT4Fb/PIMyzw/Ct20Q/7/RZhkNS50aLHJIeDcomriM++Fh4aRaOz4XUq/J19QAZjAspcOaI+OzL0poGCBljlUToqvcA8AmScczV774of0bN0Crum2quYSqsTf9Bn8s+HjJc/NY507+7PUZ4yUafFBjte9e9C9KqIBhsYzsChoW9ZwfLqn5D1fQku2jjTg3WHZPzOT+W4lh4Q+44ecc4M2X6M5eYbqEhGOSh1obLzaLQLeV/uZ5WJRKPz828+EqlBmwqRuunwZLUR4WccARhLqi6NaKKpLb7QZqcHRGCRVET+SfI54Gv6duDQQqSkjKUeTVongmySJxubWd5Eo13Lex8xguVAk5HZTotiyKUvOPN2qGUJePXb4Q826grllZhsV3uXoZ2808LNUy3VYZ33t2CQ3Bex0MlhLgeQYWdwb1Z/ceApDdyCWj9cLBZuno7DAsUvrxXtFw5O1QUJPfaL1mDeQusaL09xhLzQ/IojM+YZax/umA2c+xuiiJE/0+ZgOOywBRhgPXsNBrNVLv7SRGhAGs2yihYWdYVF072m+bXrfPlzNJFGWTd6k5RWYmTQPK0rAUGSxKfFlKw8L2neXRn/eQn1sURVi5RCeu9GW67Yewu6xwlRsJEpSuEejNJSSJbinTmdcSqmCo5u0IjGqV/oU8LPMERkrxmmZYnt2bJVNbNt5AJAhE+f2lLqF+MR8SjFVknzQsrmq8Cr9xxrHYvHsSb7vgBNzxyPbOdp3t40grbGE/+Kbo1szDorZvtrPU6ZEwyFQ5x//0mpfgiZ0TOGvNEaX3KUKRjsDQsFgiWmqA2AwLF/T2K6yZHq8uaGf49xw8D4vpMuypWwNBUyhIqu7Lr5x8DCamW2IECL0CLga1J4aF3s84ttnIgmGiymTCJ3letG/QsF1C9jZHLx3FM3uyhaBXw9KHZ0wdv+g9KmJQAVPDUnUxWsUl1G0tIdpOVf1kiBKaZ6AJ2qIoyv2Vz+3LXqzlHUOkKDHS0h6EWVUwiLBmSThKccyyMfzJb57WOb7Zj6JChXTwMRkWuvJNnNqcKuf43xyh4L2gSEXvE90ajInAsKhf1Wb9dQmpqrG2dob3h8NkWPyZbocBqRCRps772l87Be/7dyeLq3Y/w6JWrAUTnkcDYDA+tcg6RhFzWDYXDD8WABx/hJzHaVAo4+7yMyzue9ENtEuogGFRkTmezZZSDUvFMVcZOFEkv3OGSyivQ2X/VoQXHbUY9zy5Gy88cnHxxgRlw/dnA8FgKQGud1g0ogyWDsPSya/C76c/cdzgbr4pLOzPcWqxDoMtGkTV4V2+z7IMizZ8sn9dBQvn+kXiuRE4agI7VWSA6LBmcz8p4VW3UEYG9bmXdwmZ94L2ZVjysEigp1Sm/g792nqO1b0pZFjU9vZ2vBhj0RjCUSk1P2vruBXjhfv0E2Uei6NJLTN/HpY+GCy5O81/7SQ3NAdlWKoW9lTtj9btKDFAjhLqhmH50KWn4fdf8xIr6V0ReLLLucQQkrfDBx4Cu6QT1rx7YgaAZljs1ZHZDnUJObLq9wWDyMNCaf/y2Tdly9yXr4YyLGozXvOF7zNI468MLn7Z0TjpmCV4/Wmrxd99qfldYcpcw6KolkG4hGqGS6hctAMXQJrVvHvq1kDRTSVzaV9AT2BF7fjEuSZrKIlu/X2Sih8W9QPIJseVS/pbgLLIgC7DHvkYFuoU6odNnI8vBRf5Lee9EOevPRKnH7/cuQ2NEqrqhq/lBoucDdoU7ZtRklU1LFWNFXqsYWBOA8NSAi3GsHDfrzZYzP34DV5CJoOpZhuDAs/t0C+M1GLMtJLSA7TqRlFCKBfDooSSuSjSkQtmkALmMjj9+BW445qLnb8bzBBbrdDbM+IJa5bcTj0bLJLodsQdpUFB+01zugDDka/BharMnG/7slR5aZdQbLuEigW95Scu2vRxR4z3nQmrmgxTOrrBsLD2+s6w5C4hf7+vfvWLcfWrX+zdZkkPObYowyJB0rB0k+m2WwyTSygwLCXAGRa6CgWyHCxAieJe5IYfGqDBUiXHQBXkvtySLiGXWMsnTjaTu3VCUYUXZhD1kgYFo5YQM0CMMveCS4gRLMYg3788LNU1LFxPQNmYYXYJ0UelzPXzuoRK6ke0S0j6zbz//BhF17JsH7K29OdBuIOK8o8UjY8AcDRhffh7TQXh/XjldWhw79MgjQCtmjJBGWZShFD2u200S4u4QWGYGJZgsJSAyuGgsGSUGyzZw2onRHPf4F5S8xdhUO6Syi4hhxjVx7jQVQYvjuh0CQ0w4qofoPoCn5CQPhOLRjjDkn1PTeden6FRMUqoXLQDfQa4WHCY7ceqSRX9otvOc17SFSJm0mXPsfWuFLxr6p0sM+nS/g9CcFv0PNoMtL0NZVj49aLMdj8mzyrutCJQV/Z0s6LB0unHmMMlRK+rFgDPHuvhGsfnAsFgKYEWY1h4+fRcdMuupuSN+dClp+H1L1+NXz/j2L72kcKol9LHh0y9OGVFhjnTwgd6j2FHJ3CVlC/PREp1EoZRNtyPcUOYJCVBchxH+eDlShxHkxg2eszD8sYzjsXJq5filSeuzL8zRbfu9rmGZdijhBS4yLV4e/2Zu4LLZpn1hcUWuYSKXt/fOvs4vPqlR+PXXiHrp6R+AMDxRwyAYSkwWKxTEc6Nalj4dV080l8FgxqH+pFigj5X061qBkuuYXExLML48UsvPhJLR+s494Qjqna1MnRq/oEfqhBBw1ICvLjXcUeM56XIgfJhzQDw9l86AW//pRMG1FN0+qE/93My5yF17uOb1r8vjBlwT3AzzCVEz6UozHqYILmy1KlYNZFqMVpJm1Rrzn5Xl4iG2Pd6b3/jjGPxG8xwpgxX+bBmU8MyzPYj7XeZyBp6d5TrV7dVzh3jZVgM960gui14ts9+4RH4+98937uNPpb+PAiDxaXBUCgzPlKDhU/8i0bNLNi9Ql2Pfi94quoTtYbFIbqt2+PeZeeuwZvOPn5WWI9uBL6DwhAPLcMDzrAcs3QMN775zPzv1cvGAAialTlaaQ7KXVLWJaR+jtnknPeJfeF6EZot0yVkZIydpxoW9fJrQ4QbLCbDojUs2Yc2cU8OIvlgHEd5JmepEJuCmTXYzHQ7zBqWqtonei6KSc3bKjmQa4G132BpxHZYs+8eVAU9l35qWNa/9kQAwHW/fqp3O0ufI2xDWaw9kzPO3/phY9BilP1E1UgcNT44RbeGS5kuDGbnPcuTXQ7Bex0YlhLgGhYA+PUzjsXLVi/Fpqf34OKXHQ1AEuXNRu9sGJENfXzIXIUHXcd3J45j2zvaW9nxZ893DUtd0LDkkxjr+ki9BqBF8rCY21Oyb1ADyH+95GV4+vlJ7yrcNB5ZccwhGNhcqCpIp6dC8ygBVPjob8eXKbSIYRlzuAm6QUrKKvdTw/JfL3kZfv81L7G0fTaqLej2TjaNvxeP9JdhGSkQu1bF//5PF+Hep3ZbrGUR1PjgMk6p63cuFmdVhN2DRjBYSmDG4ZN86aqleOmqpfnfUm2MucDy8QYWj9Sygox91bCUpcA7/8bqX/9Axbv4/11xLn709G78u9NeAEDWsBgJwIbZBwFHan6HrkGtsnQeFnS2z/5N0gEm8Ongqle+qHAbyyVkaFgG0av+gGtGimC4hBwMS9HkmbtIhc2M/tTMQp+AW4jZDWi04zFE3NoPFBsrAsNScPlVnisFyrD0Y2xd/ysn4u5fPI/Tj3PnV6mCs194BM5+4RGV99N5WFwaFrdofzYQagnNM/zlZWfgP/7DJvy317/Mu92wuITGR2r42rtf3beVg0KZMuuAECVUENbMDaB1p67CulNXWb8bdOg8cglJxQ956LfClRedgO///HmcdlxW14azVe1BZhysADOseXhFt3FkJmmUUvP79ycuoXHTYFGTdNFkXXMY7vy7emzXI+unS+iUFyzF71y0Fv//9u49KKorzwP49zbSDcijRR4N8kYDKg8jKulko0xgBded6JhEQ9zScSwdDdYmo2P52ETz2FqspCY1ycQylZpKnNqaiRlnNc64mhqiguuE4AhYPpJQ4hLJqK2jWQRB3mf/IH3pe/v2C7r7nr79+1RZIPd2c/pwbt9fn8fvpE+OUGXFh7xZuAo6uvrkPSy2q4TGX55ls1OwbHbK+J9onFzlYZGsElLh7zY3IxbxUQYseCje779bjgIWN5TPNOHyq+UuNwuzGxJS8Y07bbL3ly2GupmHxUqQBS5WnvZEKQ0JSSbg8j4kJEmqNvJVJ+tpsVo/Pxvr52eL/xfE80b+P8hJwGLbBOSJ4ziKVzBBp5NMmvd0KNHZkNDyOakYGBrG8jmpTp/D3c0PJyhkuvXmkJAgCHjlyZleez6Pfz/k173yea8tmYl//++vsGdZgeTn3p50y4vROSzKwalSHhZ/ypsSg7M7S2kOSyBxZ2dT+xuxr0qjjrGm5pcHOPIbhau5PtbgRJox1v44r5Q3P4TkqyOjQ0LWHhbPlkz6inwCNK89LCE6AbBZtCFdQedOwGLTwyIbEoqPMuDFsofcfg7lVUKj34cqDQl5sYdFbe6uDlxlzsCzc9Ps9uSJNHi3h4UXCVEjizZMMWGKx0MV8rD4Gw/BCkABi1e5e0EGKrcn3Vq7wMVhD+lxV7s3O3o+R580eBhbdcbZKiF3V1xZz/IwiabP2O8lxOccFmfbQLgT6No+Wt7D4i5rMrR4hXkjtsG9INjnYfFmD4va5D0sztqJ0gaCtkkNebmBesOz81KRGhuOR7ImKx4Plbzvaac9jAUFLF4kv4h4v5F6KtTtSbfSeRd2Q0KyenH15mO9sUgyxtouB+V9SEih3GIg4mFd+mPSrTtsiy3vYeGp3TsNWDwcEpLPYXHX8jkpmGIMQ3Gm/Q1JvoGivLyOhgkCknwOi+LCZscmejk1Py8ME0LwRG6iw+NKewkFKwpYvEjelrTWtqwXjqs3enkXuKt0464CIHGTMge9KjzdIJUoTbpVynSrRL6RJC+TbqXZieVJ5vj5e8iDWU93MpdMug0bW8Di7IY0mrxMuT1oqYdlvEPm3k7NHyjUnsPCE+1cDRyQ33i11G0J2KTmdzWM8f1Xh3lY7OawuOphsf/0ydNuza7Y3jStr8VaJa6XxErPs6ZgT431fqZST9jNYbH5GzBOeoEA5z0soe4MCdk8fKxDQs5Yy2Ntw/L3DC31sMg/53gesIzWhcbeWp2ybafUw0K8RutDQiW5CTjTegfFWbFOz5Nn9nTVw+LqzUdpk7JAXdYsz93h7hJxq6L0WJzYsgBJDibo+YskD4tOOudAvru5muTzVKTLml23m4HB0dcy1iEhZ0azrUrbhZWWJt1GGJS3NnD78frg7GHRfb/cfWiYae6e4ikKWLzI043LAo3S3jNK5MMdribZuhoSsgYkjhIo8X4RT1DIHzM6h8X5Y0dXE42emB0f6dXyjYU0D4sg6UXiZSUToDQRfvR7d+awdPUNit9HubFS0FOjQ0LWeVrS41oaEpLXn6dXbaSXE8cFktCQkYCF9xWRvhbcr97L7OewBNdFZSUfCnLWLa90XM5Van53uvbVpDQG7SjTrZw8wOGFfIdt22G5AU7m2QAKPSyyRG2u3LdJXuaLZGvynjb5jVhLPSzyITXPe1hG64KnYUd/CBUDWs7eCPyM73f6AGOXgj5IG5d8BYz8fSk0RJAMabibOM5Rr4p8TgxvJPlj5L1PrtqI2MPii5KNXYikh0V6bJCXtdeAuFRUaf6VO59W7/cOujxnPKx1pzQkFKITvL4xn5rkGYHHM+m2b4CfNuYP1mDPnS0QtCy4X72XyS9A3m4y/iKIN2PrV/vJyGsey8B/HPtacr4jSpvMSZY1c17RzuawuB4SUv7krTb5smZbvKxkAoB/WzwdKZPC8U/5I/tSeTwk5POARTrp1rZ8YQ5StQeqSNkqK0/btG3q+p4B3/5deLPnqQJ8c7fbJxnMA8mYroi9e/ciIyMDYWFhKC4uxtmzZ52ef/DgQeTm5iIsLAz5+fk4duyYeGxgYADbtm1Dfn4+Jk6ciOTkZKxatQo3btwYS9FUxcteQmpzlYcFAJ4rThe/v3LrvtPnU5rDopMEAXy/sdt+SrZ+ay296yGh78/nrCnpJL1G0mM8TbqNNExA1Q+mIjNuIgDPJ2v7eisEMWDR2V8rWhoOAuRzUDx/vG2A86B/yMmZ2jP/oXisMmeoXQzVefxO//HHH2Pz5s3YvXs3mpqaUFhYiPLycty+fVvx/M8//xyVlZVYu3YtmpubsXTpUixduhSXLl0CAPT09KCpqQkvv/wympqacOjQIbS0tODJJ58c3ytTgas9c4KFGLA4WCUEjLx57ViUC2AksZYzIQrjt57uCaMm+RJgwHYOi/PHiudzlNsEkJZb/kmZpx4WOU9XCfmaNdYOVVjWrLWAxXYOy3jfG3uDbEiIjPA4YHnrrbewbt06rFmzBjNmzMB7772HiIgIfPDBB4rnv/3226ioqMDWrVsxffp0vP7665g9ezbeffddAEBMTAxqamqwfPly5OTk4JFHHsG7776LxsZGtLe3j+/V+ZnWE8e5S547xNEqoJ8uyMblV8uxcKbJ6fNZeyWkmx969klZTc72EnJ103Q3sPE36RwWaeEGOVolJCfZg4qD+SF2+27ZVKW3d1tXmzf3AurpD64hITLCoyuiv78fjY2NKCsrG30CnQ5lZWWor69XfEx9fb3kfAAoLy93eD4A3Lt3D4IgwGg0Ojynr68PnZ2dkn9qk3/SDPYelhA3bsrubCopbn4o2a8mcAIWQRBGJw57nJrfep7Pijcm0mXN0mODHA0JyY213eh9FNxYy6O0E3qYhpLGAdIelvH2GD4YCK4hITLCo6vwzp07GBoaQmKiNM10YmIiLBaL4mMsFotH5/f29mLbtm2orKxEdHS0w7JUV1cjJiZG/Jea6nyLd3+QdzeH67X1huMueQ/LeFdLTU+KknwFAivTLWC/TYGnqfl5C34liePselgCI2DxZEgo0gdZbgFgWmIkJugEzEyOASCbdKu1HhYv1iENCQUnrlYJDQwMYPny5WCMYd++fU7P3bFjBzZv3iz+v7OzU/WgxfbNZnaaUXNj0O6SByrjnWKyYm4aymeaYIzQ2/yO0eM8zEVwZYJOQD8UMt26CEQiOV3OKN9LyBbXQ0I2ZfVkybAv0vIDQK4pGk27/lFMqmZbr1p7/4gyjK4S6udo6TsJHB5dhXFxcQgJCcGtW7ckP7916xZMJuV5CCaTya3zrcHKtWvXcPLkSae9KwBgMBhgMNhv164m256EkpwEFUuiLnmGW2/ko7ENVoCRIQmdAAwz/oeEAIX9kNwcElrzWAbiIg14erbzicn+Jl0lJOthCZAhIXeazfZFudhz/GvsWVbgszLZbqpoWz6DxpY1a63HiPifRy1Ir9ejqKgIJ06cEH82PDyMEydOwGw2Kz7GbDZLzgeAmpoayfnWYOXKlSv47LPPMHmy/TbsgWDA5lPDD4I4YBEnin7fusa6y60rSnNbeGUtY4hsiMfVUE9CVBjW/kMmYiJ8U4djFehDQqEhglt5QDYsyMbXr1fAnO2f9yQt97DwlkuIBB6P+zk3b96M1atXY86cOZg3bx5++ctforu7G2vWrAEArFq1ClOmTEF1dTUA4IUXXsCCBQvwi1/8AosXL8aBAwdw7tw5vP/++wBGgpWnn34aTU1NOHr0KIaGhsT5LbGxsdDr9coF4VDjtf8Tv7edbxFs5Pvf/GvpNDR/24Gni7zbS6DTARgKzB6W0TpSq0Tj46yngqdMt3IxEaHQh+gQH+V+76w/Awfbe7rWAhZCxsvjgGXFihX4+9//jl27dsFisWDWrFn49NNPxYm17e3t0NmsHXz00Ufxu9/9Di+99BJ27tyJadOm4ZNPPkFeXh4A4Pr16/jjH/8IAJg1a5bkd506dQolJSVjfGn+93RRCv7nyh2U5iYE9acJee9B7EQ9jlQ95vXfY+2t4D0PCwAsm52Chra7mJowsnGhtcSBMP9GiXwvIVs897DEhIfi0POP+mxOynjZtgctDqEYJujQNzj2gDYsVEcTboPYmK7aTZs2YdOmTYrHamtr7X72zDPP4JlnnlE8PyMjQzMbWT1ZmIyMyRORYwre3hXANjW/b2/G1nkUgdDDsv37JHlWvKbcd5dtPpNAWtYMAHlTYtQugkPSOSza62GJNExA32D/mB//6pMzse2/LuKnC7K8WCoSKPj8mBGgBEFAYapR7WKoztGmh942OswSeJ9EeU0I5y7JkND3L2L9/Cy8f/p/8dI/T1erWAFPp/EhoQhDCO52j/3xK+amoSQnAQkeDOkR7aCAhXidu0t2x8vagxMaAENCcv7qhfIVpTksOxblYsOCbMRODJx5Z7yRpuYPvEDclYn68d9yEqPDXJ9ENEl7VwRRnTih1NdDQrK05oFkNINt4JUdUN5LSBAEClbGSTqHRXs9LO5ktibEEQpYiNf5KztriDiHJfCasbuZbnklCIJdRmMyfpIhIY3lYQEoYCHjo70rgqjO+p7r65ux9UYZCJNu5aLDR/Kq+CpHjT8EetDFIy3nYQGASIP2XhPxHwp3idcJfhqqsS5nDoRlzXLrHs9CWmwElsxKVrsoY6YTgCFQD4s3aT0PS4QX5rCQ4EWth3idv+ZniHlYAnBIKD7KgH95JF3tYozLyN+XcbeTdCDTeh4W3vbEIoFFe1cEUZ2/VglZh1WMnKWtDxbybQbI+Gk9D0tEkO5gT7yDwl3idZMj9ZKvvlK9LB+Xb3RiZrLzjTKJb8i3YCDjZ1uVBg32sNCkWzIe1HqI120syUZBihElOfE+/T3Tk6IxPYmCFbXQpFvv0/qk20eyAnNjW8IHCliI10WFhaIiz6R2MYiPCYL0Kxk/24BFHwC7kHuqKH0S/nPtPKTFRqhdFBKAKGAhhIxJSU4CLl2/h5RJdPPxlhDJHBbtBSwA8Pg03/a8Eu2igIUQMibvVD4MxljAZuvlkWATo+g1GrAQMlZ0RRBCxoyCFe+y3bieAhZCpOiKIIQQTtjOWwnkLMiE+AINCRFCCCfC9SHYv2YuAFoCTIgcXRGEEMKRkpwEtYtACJdoSIgQQggh3KOAhRBCCCHco4CFEEIIIdyjgIUQQggh3KOAhRBCCCHco4CFEEIIIdyjgIUQQggh3KOAhRBCCCHco4CFEEIIIdyjgIUQQggh3KOAhRBCCCHco4CFEEIIIdyjgIUQQggh3NPMbs2MMQBAZ2enyiUhhBBCiLus923rfdwRzQQsXV1dAIDU1FSVS0IIIYQQT3V1dSEmJsbhcYG5CmkCxPDwMG7cuIGoqCgIguC15+3s7ERqaiq+/fZbREdHe+15tYLqxzGqG+eofhyjunGO6se5QKsfxhi6urqQnJwMnc7xTBXN9LDodDqkpKT47Pmjo6MD4g+vFqofx6hunKP6cYzqxjmqH+cCqX6c9axY0aRbQgghhHCPAhZCCCGEcI8CFhcMBgN2794Ng8GgdlG4RPXjGNWNc1Q/jlHdOEf145xW60czk24JIYQQol3Uw0IIIYQQ7lHAQgghhBDuUcBCCCGEEO5RwEIIIYQQ7lHA4sLevXuRkZGBsLAwFBcX4+zZs2oXye9eeeUVCIIg+Zebmyse7+3tRVVVFSZPnozIyEg89dRTuHXrlool9q3Tp0/jhz/8IZKTkyEIAj755BPJccYYdu3ahaSkJISHh6OsrAxXrlyRnPPdd99h5cqViI6OhtFoxNq1a3H//n0/vgrfcFU3P/7xj+3aUkVFheQcrdZNdXU15s6di6ioKCQkJGDp0qVoaWmRnOPOtdTe3o7FixcjIiICCQkJ2Lp1KwYHB/35UnzCnfopKSmxaz8bNmyQnKPV+tm3bx8KCgrEZHBmsxnHjx8XjwdD26GAxYmPP/4Ymzdvxu7du9HU1ITCwkKUl5fj9u3bahfN72bOnImbN2+K/86cOSMe+9nPfoY//elPOHjwIOrq6nDjxg0sW7ZMxdL6Vnd3NwoLC7F3717F42+88QbeeecdvPfee2hoaMDEiRNRXl6O3t5e8ZyVK1fi8uXLqKmpwdGjR3H69GmsX7/eXy/BZ1zVDQBUVFRI2tJHH30kOa7Vuqmrq0NVVRW++OIL1NTUYGBgAAsXLkR3d7d4jqtraWhoCIsXL0Z/fz8+//xz/OY3v8H+/fuxa9cuNV6SV7lTPwCwbt06Sft54403xGNarp+UlBTs2bMHjY2NOHfuHJ544gksWbIEly9fBhAkbYcRh+bNm8eqqqrE/w8NDbHk5GRWXV2tYqn8b/fu3aywsFDxWEdHBwsNDWUHDx4Uf/bVV18xAKy+vt5PJVQPAHb48GHx/8PDw8xkMrE333xT/FlHRwczGAzso48+Yowx9uWXXzIA7K9//at4zvHjx5kgCOz69et+K7uvyeuGMcZWr17NlixZ4vAxwVI3jDF2+/ZtBoDV1dUxxty7lo4dO8Z0Oh2zWCziOfv27WPR0dGsr6/Pvy/Ax+T1wxhjCxYsYC+88ILDxwRT/TDG2KRJk9ivf/3roGk71MPiQH9/PxobG1FWVib+TKfToaysDPX19SqWTB1XrlxBcnIysrKysHLlSrS3twMAGhsbMTAwIKmn3NxcpKWlBWU9tbW1wWKxSOojJiYGxcXFYn3U19fDaDRizpw54jllZWXQ6XRoaGjwe5n9rba2FgkJCcjJycHGjRtx9+5d8Vgw1c29e/cAALGxsQDcu5bq6+uRn5+PxMRE8Zzy8nJ0dnaKn7S1Ql4/Vr/97W8RFxeHvLw87NixAz09PeKxYKmfoaEhHDhwAN3d3TCbzUHTdjSz+aG33blzB0NDQ5I/LgAkJibi66+/VqlU6iguLsb+/fuRk5ODmzdv4tVXX8Xjjz+OS5cuwWKxQK/Xw2g0Sh6TmJgIi8WiToFVZH3NSu3GesxisSAhIUFyfMKECYiNjdV8nVVUVGDZsmXIzMzE1atXsXPnTixatAj19fUICQkJmroZHh7Giy++iMceewx5eXkA4Na1ZLFYFNuW9ZhWKNUPADz33HNIT09HcnIyLly4gG3btqGlpQWHDh0CoP36uXjxIsxmM3p7exEZGYnDhw9jxowZOH/+fFC0HQpYiEuLFi0Svy8oKEBxcTHS09Px+9//HuHh4SqWjASaZ599Vvw+Pz8fBQUFyM7ORm1tLUpLS1UsmX9VVVXh0qVLkrlgZJSj+rGdy5Sfn4+kpCSUlpbi6tWryM7O9ncx/S4nJwfnz5/HvXv38Ic//AGrV69GXV2d2sXyGxoSciAuLg4hISF2s6xv3boFk8mkUqn4YDQa8dBDD6G1tRUmkwn9/f3o6OiQnBOs9WR9zc7ajclkspu4PTg4iO+++y7o6iwrKwtxcXFobW0FEBx1s2nTJhw9ehSnTp1CSkqK+HN3riWTyaTYtqzHtMBR/SgpLi4GAEn70XL96PV6TJ06FUVFRaiurkZhYSHefvvtoGk7FLA4oNfrUVRUhBMnTog/Gx4exokTJ2A2m1Usmfru37+Pq1evIikpCUVFRQgNDZXUU0tLC9rb24OynjIzM2EymST10dnZiYaGBrE+zGYzOjo60NjYKJ5z8uRJDA8Pi2/AweJvf/sb7t69i6SkJADarhvGGDZt2oTDhw/j5MmTyMzMlBx351oym824ePGiJKirqalBdHQ0ZsyY4Z8X4iOu6kfJ+fPnAUDSfrRaP0qGh4fR19cXPG1H7Vm/PDtw4AAzGAxs//797Msvv2Tr169nRqNRMss6GGzZsoXV1taytrY29pe//IWVlZWxuLg4dvv2bcYYYxs2bGBpaWns5MmT7Ny5c8xsNjOz2axyqX2nq6uLNTc3s+bmZgaAvfXWW6y5uZldu3aNMcbYnj17mNFoZEeOHGEXLlxgS5YsYZmZmezBgwfic1RUVLCHH36YNTQ0sDNnzrBp06axyspKtV6S1zirm66uLvbzn/+c1dfXs7a2NvbZZ5+x2bNns2nTprHe3l7xObRaNxs3bmQxMTGstraW3bx5U/zX09MjnuPqWhocHGR5eXls4cKF7Pz58+zTTz9l8fHxbMeOHWq8JK9yVT+tra3stddeY+fOnWNtbW3syJEjLCsri82fP198Di3Xz/bt21ldXR1ra2tjFy5cYNu3b2eCILA///nPjLHgaDsUsLjwq1/9iqWlpTG9Xs/mzZvHvvjiC7WL5HcrVqxgSUlJTK/XsylTprAVK1aw1tZW8fiDBw/Y888/zyZNmsQiIiLYj370I3bz5k0VS+xbp06dYgDs/q1evZoxNrK0+eWXX2aJiYnMYDCw0tJS1tLSInmOu3fvssrKShYZGcmio6PZmjVrWFdXlwqvxruc1U1PTw9buHAhi4+PZ6GhoSw9PZ2tW7fO7gOAVutGqV4AsA8//FA8x51r6ZtvvmGLFi1i4eHhLC4ujm3ZsoUNDAz4+dV4n6v6aW9vZ/Pnz2exsbHMYDCwqVOnsq1bt7J79+5Jnker9fOTn/yEpaenM71ez+Lj41lpaakYrDAWHG1HYIwx//XnEEIIIYR4juawEEIIIYR7FLAQQgghhHsUsBBCCCGEexSwEEIIIYR7FLAQQgghhHsUsBBCCCGEexSwEEIIIYR7FLAQQgghhHsUsBBCCCGEexSwEEIIIYR7FLAQQgghhHsUsBBCCCGEe/8PKqxim9Rts3gAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.plot(distances);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f4703f6b-9bf1-45ef-b0ea-a4fb95cc9007",
   "metadata": {},
   "source": [
    "Hm, cool! It's interesting to see sections where distances are smaller and then areas of larger distances. What stands out to me most is the outliers which are spread out.\n",
    "\n",
    "There are many ways to chunk up the essay based off these distances, but I'm going to consider any distance above the 95th percentile of distances as a break point. This is the only parameter we'll need to config.\n",
    "\n",
    "I'm going to build in the final viz, check out the video for an iterative build and an overview."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5044cd49-ef33-4d00-a629-bc3411b7939e",
   "metadata": {},
   "source": [
    "Let's look at the chunks that came out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "cba11136-a6fb-4ec6-83db-0476c9efc5e0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "plt.plot(distances);\n",
    "\n",
    "y_upper_bound = .2\n",
    "plt.ylim(0, y_upper_bound)\n",
    "plt.xlim(0, len(distances))\n",
    "\n",
    "# We need to get the distance threshold that we'll consider an outlier\n",
    "# We'll use numpy .percentile() for this\n",
    "breakpoint_percentile_threshold = 95\n",
    "breakpoint_distance_threshold = np.percentile(distances, breakpoint_percentile_threshold) # If you want more chunks, lower the percentile cutoff\n",
    "plt.axhline(y=breakpoint_distance_threshold, color='r', linestyle='-');\n",
    "\n",
    "# Then we'll see how many distances are actually above this one\n",
    "num_distances_above_theshold = len([x for x in distances if x > breakpoint_distance_threshold]) # The amount of distances above your threshold\n",
    "plt.text(x=(len(distances)*.01), y=y_upper_bound/50, s=f\"{num_distances_above_theshold + 1} Chunks\");\n",
    "\n",
    "# Then we'll get the index of the distances that are above the threshold. This will tell us where we should split our text\n",
    "indices_above_thresh = [i for i, x in enumerate(distances) if x > breakpoint_distance_threshold] # The indices of those breakpoints on your list\n",
    "\n",
    "# Start of the shading and text\n",
    "colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k']\n",
    "for i, breakpoint_index in enumerate(indices_above_thresh):\n",
    "    start_index = 0 if i == 0 else indices_above_thresh[i - 1]\n",
    "    end_index = breakpoint_index if i < len(indices_above_thresh) - 1 else len(distances)\n",
    "\n",
    "    plt.axvspan(start_index, end_index, facecolor=colors[i % len(colors)], alpha=0.25)\n",
    "    plt.text(x=np.average([start_index, end_index]),\n",
    "             y=breakpoint_distance_threshold + (y_upper_bound)/ 20,\n",
    "             s=f\"Chunk #{i}\", horizontalalignment='center',\n",
    "             rotation='vertical')\n",
    "\n",
    "# # Additional step to shade from the last breakpoint to the end of the dataset\n",
    "if indices_above_thresh:\n",
    "    last_breakpoint = indices_above_thresh[-1]\n",
    "    if last_breakpoint < len(distances):\n",
    "        plt.axvspan(last_breakpoint, len(distances), facecolor=colors[len(indices_above_thresh) % len(colors)], alpha=0.25)\n",
    "        plt.text(x=np.average([last_breakpoint, len(distances)]),\n",
    "                 y=breakpoint_distance_threshold + (y_upper_bound)/ 20,\n",
    "                 s=f\"Chunk #{i+1}\",\n",
    "                 rotation='vertical')\n",
    "\n",
    "plt.title(\"PG Essay Chunks Based On Embedding Breakpoints\")\n",
    "plt.xlabel(\"Index of sentences in essay (Sentence Position)\")\n",
    "plt.ylabel(\"Cosine distance between sequential sentences\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c942fe5-cfb4-44b2-8177-35983e88ea82",
   "metadata": {},
   "source": [
    "Well now that we've succefully distracted ourselves with a visualization, now we need to combine the sentences into chunks.\n",
    "\n",
    "Because we have our breakpoints [23, 40, 51...] I want to make the first chunk 0-22, since the distance jumped on sentence 23."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "f17828f0-4d1b-4514-ad87-343301cb8450",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Initialize the start index\n",
    "start_index = 0\n",
    "\n",
    "# Create a list to hold the grouped sentences\n",
    "chunks = []\n",
    "\n",
    "# Iterate through the breakpoints to slice the sentences\n",
    "for index in indices_above_thresh:\n",
    "    # The end index is the current breakpoint\n",
    "    end_index = index\n",
    "\n",
    "    # Slice the sentence_dicts from the current start index to the end index\n",
    "    group = sentences[start_index:end_index + 1]\n",
    "    combined_text = ' '.join([d['sentence'] for d in group])\n",
    "    chunks.append(combined_text)\n",
    "    \n",
    "    # Update the start index for the next group\n",
    "    start_index = index + 1\n",
    "\n",
    "# The last group, if any sentences remain\n",
    "if start_index < len(sentences):\n",
    "    combined_text = ' '.join([d['sentence'] for d in sentences[start_index:]])\n",
    "    chunks.append(combined_text)\n",
    "\n",
    "# grouped_sentences now contains the chunked sentences"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8418f022-d929-427e-9977-ec12c4eb0236",
   "metadata": {},
   "source": [
    "Great now let's manually inspect a few to make sure they look ok."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "d709135b-6465-4720-8eb8-60dc9f91efac",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Chunk #0\n",
      "Want to start a startup? Get funded by\n",
      "Y Combinator. October 2006(This essay is derived from a talk at MIT.)\n",
      "Till recently graduating seniors had two choices: get a job or go\n",
      "to grad school. I think\n",
      "...\n",
      "]\n",
      "About a month into each funding\n",
      "cycle we have an event called Prototype Day where each startup\n",
      "presents to the others what they've got so far. You might think\n",
      "they wouldn't need any more motivation.\n",
      "\n",
      "\n",
      "Chunk #1\n",
      "They're working on their\n",
      "cool new idea; they have funding for the immediate future; and\n",
      "they're playing a game with only two outcomes: wealth or failure. You'd think that would be motivation enough. A\n",
      "...\n",
      "e tell people not to? For the same reason that the probably\n",
      "apocryphal violinist, whenever he was asked to judge someone's\n",
      "playing, would always say they didn't have enough talent to make\n",
      "it as a pro.\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "for i, chunk in enumerate(chunks[:2]):\n",
    "    buffer = 200\n",
    "    \n",
    "    print (f\"Chunk #{i}\")\n",
    "    print (chunk[:buffer].strip())\n",
    "    print (\"...\")\n",
    "    print (chunk[-buffer:].strip())\n",
    "    print (\"\\n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c4a86473-b267-483d-ac45-e0f4d30b67e6",
   "metadata": {},
   "source": [
    "I want to re-emphasize that this is an exploration of a method that is far from usable yet. This method should be tested with RAG eval to ensure that it works for your use case.\n",
    "\n",
    "I didn't worry about chunk size or overlap with this method, but you could recursively split large chunks if you needed to.\n",
    "\n",
    "How should it be improved? Let me [know](https://twitter.com/GregKamradt)! See me tease this [here](https://twitter.com/GregKamradt/status/1737921395974430953)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c43ff201-d657-49e0-8a03-8e6460113393",
   "metadata": {},
   "source": [
    "## Level 5: Agentic Chunking <a id=\"AgenticChunking\"></a>\n",
    "Taking level 4 even further - can we instruct an LLM to do this task like a human would?\n",
    "\n",
    "How does a human even go about chunking in the first place?\n",
    "\n",
    "Well...let me think, how would I go about chunking a document into its discrete parts such that the results were semantically similar?\n",
    "\n",
    "1. I would get myself a scratch piece of paper or notepad\n",
    "2. I'd start at the top of the essay and assume the first part will be a chunk (since we don't have any yet)\n",
    "3. Then I would keep going down the essay and evaluate if a new sentence or piece of the essay should be a part of the first chunk, if not, then create a new one\n",
    "4. Then keep doing that all the way down the essay until we got to the end.\n",
    "\n",
    "Woah! Wait a minute - this is pseudo code for something we can try out. See me tease this [here](https://twitter.com/GregKamradt/status/1738276097471754735).\n",
    "\n",
    "I debated whether or not to hold myself to the strict standard of using the *raw text* from a document, or use a derived form. The former felt like I was being too harsh, so I decided to explore using [propositions](https://twitter.com/LangChainAI/status/1735708004618764470). This is a cool concept ([research paper](https://arxiv.org/pdf/2312.06648.pdf)) that extracts stand alone statements from a raw piece of text.\n",
    "\n",
    "Example: `Greg went to the park. He likes walking` > `['Greg went to the park.', 'Greg likes walking']`\n",
    "\n",
    "Let's do it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "5a6f79c0-f6bd-4561-bf0a-434955d875e5",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain.output_parsers.openai_tools import JsonOutputToolsParser\n",
    "from langchain_community.chat_models import ChatOpenAI\n",
    "from langchain_core.prompts import ChatPromptTemplate\n",
    "from langchain_core.runnables import RunnableLambda\n",
    "from langchain.chains import create_extraction_chain\n",
    "from typing import Optional, List\n",
    "from langchain.chains import create_extraction_chain_pydantic\n",
    "from langchain_core.pydantic_v1 import BaseModel\n",
    "from langchain import hub"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ba10ec8-8227-4b95-a2cc-4149941dfe98",
   "metadata": {},
   "source": [
    "Pulling out propositions is done via a well-crafted prompt. I'm going to pull it from [LangHub](https://smith.langchain.com/hub?organizationId=50995362-9ea0-4378-ad97-b4edae2f9f22), LangChain's home for prompts.\n",
    "\n",
    "You can view the proposition prompt [here](https://smith.langchain.com/hub/wfh/proposal-indexing?organizationId=50995362-9ea0-4378-ad97-b4edae2f9f22).\n",
    "\n",
    "I'll use gpt-4 as the LLM because we aren't messing around. I care more about performance than I do speed or cost."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "6de38943-7697-413e-a2e8-8a62cda914b8",
   "metadata": {},
   "outputs": [],
   "source": [
    "obj = hub.pull(\"wfh/proposal-indexing\")\n",
    "llm = ChatOpenAI(model='gpt-4-1106-preview', openai_api_key = os.getenv(\"OPENAI_API_KEY\", 'YouKey'))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a838bc4-e732-492d-80a5-8c829ca637ef",
   "metadata": {},
   "source": [
    "Then I'll make a runnable w/ langchain, this'll be a short way to combine the prompt and llm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "97236eb3-361e-4ebd-aa13-979ac8718f5f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# use it in a runnable\n",
    "runnable = obj | llm"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bea6b054-bac6-4ce6-be8f-724a6ea1c5ef",
   "metadata": {},
   "source": [
    "The output from a runnable is a json-esque structure in a string. We need to pull the sentences out. I found that LangChain's example extraction was giving me a hard time so I'm doing it manually with a pydantic data class. There is definitely room to improve this.\n",
    "\n",
    "Create your class then put it in an extraction chain."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "10116bfe-12a0-4f8c-95bf-67a0f8c1ceb5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Pydantic data class\n",
    "class Sentences(BaseModel):\n",
    "    sentences: List[str]\n",
    "    \n",
    "# Extraction\n",
    "extraction_chain = create_extraction_chain_pydantic(pydantic_schema=Sentences, llm=llm)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a462b5c8-5cb2-4dcb-bedd-6ee1ce2cfd08",
   "metadata": {},
   "source": [
    "Then wrap it together in a function that'll return a list of propositions to us"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "7ec04652-19e3-4cab-a882-7c31cd87fe1a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_propositions(text):\n",
    "    runnable_output = runnable.invoke({\n",
    "    \t\"input\": text\n",
    "    }).content\n",
    "    \n",
    "    propositions = extraction_chain.run(runnable_output)[0].sentences\n",
    "    return propositions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "de0bf288-24ba-4a50-a225-400c6fff5c61",
   "metadata": {},
   "source": [
    "Go get your text of choice."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "2be92b95-76d6-4a2c-ba2f-67379998956e",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('../../data/PGEssays/superlinear.txt') as file:\n",
    "    essay = file.read()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25f4ee69-a87e-481e-b01d-403021a2610b",
   "metadata": {},
   "source": [
    "Then you need to decide what you send to your proposal maker. The prompt has an example that is about 1K characters long. So I would experiment with what works for you. This isn't another chunking decision, just pick something reasonable and try it out.\n",
    "\n",
    "I'm using paragraphs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "1121baaf-c65a-4dce-a942-83cfbf6891cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "paragraphs = essay.split(\"\\n\\n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e29ae4f7-e58b-4941-b243-ccc72c3bf37c",
   "metadata": {},
   "source": [
    "Let's see how many we have"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "6a2c36b2-bce3-461f-9f52-af1c10b1c3ab",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "53"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(paragraphs)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c3cb285-abf3-4334-aff7-5f84d741c7f4",
   "metadata": {},
   "source": [
    "That's too many for a demo, I'll do just the first couple to show it off."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "46fddfc4-7cd6-4fe4-add7-7a12c593ef6c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Done with 0\n",
      "Done with 1\n",
      "Done with 2\n",
      "Done with 3\n",
      "Done with 4\n"
     ]
    }
   ],
   "source": [
    "essay_propositions = []\n",
    "\n",
    "for i, para in enumerate(paragraphs[:5]):\n",
    "    propositions = get_propositions(para)\n",
    "    \n",
    "    essay_propositions.extend(propositions)\n",
    "    print (f\"Done with {i}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c01906ad-b5a2-4b73-a079-4564b66b147e",
   "metadata": {},
   "source": [
    "Let's take a look at what the propositions look like"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "4867944e-13f0-4207-b787-692eeebadea6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "You have 26 propositions\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['The month is October.',\n",
       " 'The year is 2023.',\n",
       " 'I did not understand the degree to which the returns for performance are superlinear when I was a child.',\n",
       " 'The returns for performance are superlinear.',\n",
       " 'Understanding the degree to which the returns for performance are superlinear is one of the most important things.',\n",
       " 'Teachers and coaches implicitly told us the returns were linear.',\n",
       " 'Teachers and coaches meant well.',\n",
       " \"The phrase 'You get out what you put in' was heard a thousand times.\",\n",
       " \"The statement that 'You get out what you put in' is rarely true.\",\n",
       " \"If your product is only half as good as your competitor's product, you don't get half as many customers.\"]"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print (f\"You have {len(essay_propositions)} propositions\")\n",
    "essay_propositions[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "941ebfc6-da6a-4fb8-833d-ed2e9810f25e",
   "metadata": {},
   "source": [
    "So you'll see that they look like regular sentences, but they are actually statements that are able to stand on their own. For example, one of the sentences in the raw text is \"They meant well, but this is rarely true.\" if you were to chunk that on it's own, the LLM would have no idea who you're talking about. Who meant well? What is rarely true? But those have been covered by the propositions.\n",
    "\n",
    "Now onto the cool part, we need a system that can reason about each proposition and determine whether or not it should be a part of an existing chunk or if a new chunk should be made.\n",
    "\n",
    "The pseudo code for how this works is above - I also review this code in the video so make sure to go watch that if you want to see me chat about it live.\n",
    "\n",
    "The script is also in this repo if you've cloned it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "1193f8e1-28aa-4c8c-8929-bfbcf7edc618",
   "metadata": {},
   "outputs": [],
   "source": [
    "# mini script I made\n",
    "from agentic_chunker import AgenticChunker"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "f550431a-9484-4095-a888-31ec3cbe1b42",
   "metadata": {},
   "outputs": [],
   "source": [
    "ac = AgenticChunker()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "833086aa-d1b7-4ac8-9d85-3a71e6e634ab",
   "metadata": {},
   "source": [
    "Then let's pass in our propositions to it. There are a lot in the full list so I'm only going to do a subset.\n",
    "\n",
    "This method is slow and expensive, but let's see how the results are.\n",
    "\n",
    "You can turn off the print statements via setting `ac = AgenticChunker(print_logging=False)` when you create your chunker."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "f7e9892a-9a1c-4269-a262-7cc4ab0eed32",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Adding: 'The month is October.'\n",
      "No chunks, creating a new one\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Created new chunk (fc52f): Date & Times\n",
      "\n",
      "Adding: 'The year is 2023.'\n",
      "Chunk Found (fc52f), adding to: Date & Times\n",
      "\n",
      "Adding: 'I did not understand the degree to which the returns for performance are superlinear when I was a child.'\n",
      "No chunks found\n",
      "Created new chunk (a4a7e): Effort-Reward Relationship\n",
      "\n",
      "Adding: 'The returns for performance are superlinear.'\n",
      "Chunk Found (a4a7e), adding to: Effort-Reward Relationship\n",
      "\n",
      "Adding: 'Understanding the degree to which the returns for performance are superlinear is one of the most important things.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns in Performance\n",
      "\n",
      "Adding: 'Teachers and coaches implicitly told us the returns were linear.'\n",
      "No chunks found\n",
      "Created new chunk (38e4a): Education & Coaching Returns\n",
      "\n",
      "Adding: 'Teachers and coaches meant well.'\n",
      "No chunks found\n",
      "Created new chunk (0402d): Educational Approaches\n",
      "\n",
      "Adding: 'The phrase 'You get out what you put in' was heard a thousand times.'\n",
      "Chunk Found (38e4a), adding to: Education & Coaching Returns\n",
      "\n",
      "Adding: 'The statement that 'You get out what you put in' is rarely true.'\n",
      "Chunk Found (38e4a), adding to: Effort & Reward Beliefs\n",
      "\n",
      "Adding: 'If your product is only half as good as your competitor's product, you don't get half as many customers.'\n",
      "No chunks found\n",
      "Created new chunk (b0b25): Product Quality & Market Competition\n",
      "\n",
      "Adding: 'If your product is only half as good as your competitor's product, you get no customers.'\n",
      "Chunk Found (b0b25), adding to: Product Quality & Market Competition\n",
      "\n",
      "Adding: 'If your product is only half as good as your competitor's product, you go out of business.'\n",
      "Chunk Found (b0b25), adding to: Product Quality & Customer Acquisition\n",
      "\n",
      "Adding: 'The returns for performance are superlinear in business.'\n",
      "Chunk Found (a4a7e), adding to: Understanding Superlinear Returns\n",
      "\n",
      "Adding: 'Some people think the superlinear returns in business are a flaw of capitalism.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns in Performance & Business\n",
      "\n",
      "Adding: 'Some people think that changing the rules would stop the superlinear returns in business from being true.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns & Economic Perspectives\n",
      "\n",
      "Adding: 'Superlinear returns for performance are a feature of the world.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns in Performance & Business\n",
      "\n",
      "Adding: 'Superlinear returns for performance are not an artifact of rules that humans have invented.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns & Economic Concepts\n",
      "\n",
      "Adding: 'The same pattern of superlinear returns is seen in fame.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns in Performance & Economics\n",
      "\n",
      "Adding: 'The same pattern of superlinear returns is seen in power.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns & Their Implications\n",
      "\n",
      "Adding: 'The same pattern of superlinear returns is seen in military victories.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns in Various Domains\n",
      "\n",
      "Adding: 'The same pattern of superlinear returns is seen in knowledge.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns: Concept, Debate & Significance\n",
      "\n",
      "Adding: 'The same pattern of superlinear returns is seen in benefit to humanity.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns Across Domains\n",
      "\n",
      "Adding: 'In all of these areas, the rich get richer.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns in Performance & Society\n",
      "\n",
      "Adding: 'You cannot understand the world without understanding the concept of superlinear returns.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns Across Domains & Their Implications\n",
      "\n",
      "Adding: 'If you are ambitious, you should understand the concept of superlinear returns.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns & Societal Impact\n",
      "\n",
      "Adding: 'Understanding the concept of superlinear returns will be the wave that ambitious individuals surf on.'\n",
      "Chunk Found (a4a7e), adding to: Superlinear Returns in Various Domains\n"
     ]
    }
   ],
   "source": [
    "ac.add_propositions(essay_propositions)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1481fe66-f73c-4fd2-a51c-3a1131a8e57c",
   "metadata": {},
   "source": [
    "Cool, looks like a few chunks were made. Let's check them out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "27c79f2a-119e-45f2-8883-0f623a7c211e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "You have 5 chunks\n",
      "\n",
      "Chunk #0\n",
      "Chunk ID: fc52f\n",
      "Summary: This chunk contains information about specific dates and times related to the current month and year.\n",
      "Propositions:\n",
      "    -The month is October.\n",
      "    -The year is 2023.\n",
      "\n",
      "\n",
      "\n",
      "Chunk #1\n",
      "Chunk ID: a4a7e\n",
      "Summary: This chunk discusses the concept of superlinear returns across different sectors and its implications for understanding economic, social, and personal growth dynamics.\n",
      "Propositions:\n",
      "    -I did not understand the degree to which the returns for performance are superlinear when I was a child.\n",
      "    -The returns for performance are superlinear.\n",
      "    -Understanding the degree to which the returns for performance are superlinear is one of the most important things.\n",
      "    -The returns for performance are superlinear in business.\n",
      "    -Some people think the superlinear returns in business are a flaw of capitalism.\n",
      "    -Some people think that changing the rules would stop the superlinear returns in business from being true.\n",
      "    -Superlinear returns for performance are a feature of the world.\n",
      "    -Superlinear returns for performance are not an artifact of rules that humans have invented.\n",
      "    -The same pattern of superlinear returns is seen in fame.\n",
      "    -The same pattern of superlinear returns is seen in power.\n",
      "    -The same pattern of superlinear returns is seen in military victories.\n",
      "    -The same pattern of superlinear returns is seen in knowledge.\n",
      "    -The same pattern of superlinear returns is seen in benefit to humanity.\n",
      "    -In all of these areas, the rich get richer.\n",
      "    -You cannot understand the world without understanding the concept of superlinear returns.\n",
      "    -If you are ambitious, you should understand the concept of superlinear returns.\n",
      "    -Understanding the concept of superlinear returns will be the wave that ambitious individuals surf on.\n",
      "\n",
      "\n",
      "\n",
      "Chunk #2\n",
      "Chunk ID: 38e4a\n",
      "Summary: This chunk explores the concept of effort and reward correlation and challenges the notion that they are always directly proportional.\n",
      "Propositions:\n",
      "    -Teachers and coaches implicitly told us the returns were linear.\n",
      "    -The phrase 'You get out what you put in' was heard a thousand times.\n",
      "    -The statement that 'You get out what you put in' is rarely true.\n",
      "\n",
      "\n",
      "\n",
      "Chunk #3\n",
      "Chunk ID: 0402d\n",
      "Summary: This chunk contains information about the intentions and attitudes of educators and instructors.\n",
      "Propositions:\n",
      "    -Teachers and coaches meant well.\n",
      "\n",
      "\n",
      "\n",
      "Chunk #4\n",
      "Chunk ID: b0b25\n",
      "Summary: This chunk discusses the consequences of inferior product quality on business success in a competitive market.\n",
      "Propositions:\n",
      "    -If your product is only half as good as your competitor's product, you don't get half as many customers.\n",
      "    -If your product is only half as good as your competitor's product, you get no customers.\n",
      "    -If your product is only half as good as your competitor's product, you go out of business.\n",
      "\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "ac.pretty_print_chunks()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e4aebf75-53b9-4695-bea9-effa0adf967e",
   "metadata": {},
   "source": [
    "Awesome, then if we wanted to get the chunks properly, then we get extract a list of strings with them. The chunks propositions will be joined in the same string"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "e90e5eb4-676f-4310-8bbf-be87f94d07eb",
   "metadata": {},
   "outputs": [],
   "source": [
    "chunks = ac.get_chunks(get_type='list_of_strings')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "d08eb17e-10ab-426e-8998-bed29ab76dac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['The month is October. The year is 2023.',\n",
       " 'I did not understand the degree to which the returns for performance are superlinear when I was a child. The returns for performance are superlinear. Understanding the degree to which the returns for performance are superlinear is one of the most important things. The returns for performance are superlinear in business. Some people think the superlinear returns in business are a flaw of capitalism. Some people think that changing the rules would stop the superlinear returns in business from being true. Superlinear returns for performance are a feature of the world. Superlinear returns for performance are not an artifact of rules that humans have invented. The same pattern of superlinear returns is seen in fame. The same pattern of superlinear returns is seen in power. The same pattern of superlinear returns is seen in military victories. The same pattern of superlinear returns is seen in knowledge. The same pattern of superlinear returns is seen in benefit to humanity. In all of these areas, the rich get richer. You cannot understand the world without understanding the concept of superlinear returns. If you are ambitious, you should understand the concept of superlinear returns. Understanding the concept of superlinear returns will be the wave that ambitious individuals surf on.',\n",
       " \"Teachers and coaches implicitly told us the returns were linear. The phrase 'You get out what you put in' was heard a thousand times. The statement that 'You get out what you put in' is rarely true.\",\n",
       " 'Teachers and coaches meant well.',\n",
       " \"If your product is only half as good as your competitor's product, you don't get half as many customers. If your product is only half as good as your competitor's product, you get no customers. If your product is only half as good as your competitor's product, you go out of business.\"]"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chunks"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e920b345-0294-4b5d-995c-da36bdfaeace",
   "metadata": {},
   "source": [
    "Great, now we can go use that in our evaluations for your retrieval."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "75a8462b-8c10-4550-b42c-453ecdec3647",
   "metadata": {},
   "source": [
    "## Bonus Level: Alternative Representation <a id=\"BonusLevel\"></a>\n",
    "So far I've shown how to chunk up your raw text (okay, I was a bit liberal with level 5).\n",
    "\n",
    "But what if your raw text isn't the best way to represent your data for your task?\n",
    "\n",
    "For example, if you're doing semantic search on chat messages, raw chat messages may lack the context to make a successful embedding. Maybe actually trying to semantic search of a summary of a conversation would do better. Or maybe hypothetical questions that the chat would answer?\n",
    "\n",
    "This is where the world of chunking/splitting starts to dive into the world of [indexing](https://docs.llamaindex.ai/en/stable/understanding/indexing/indexing.html#what-is-an-index). When you index, you're making a choice about how you want to represent your data in your data base or knowledge base.\n",
    "\n",
    "This is more of a retrieval topic, but it's worth talking about with chunking.\n",
    "\n",
    "Let's quickly go through a few popular alternative ways developers like to represent their data. There are unlimited methods to try. We'll review 4 of them\n",
    "\n",
    "* **[Multi-Vector Indexing](https://python.langchain.com/docs/modules/data_connection/retrievers/multi_vector)** - This is when you do semantic search for a vector that is derived from something other than your raw text\n",
    "    * **Summaries** - A summary of your chunk\n",
    "    * **Hypothetical questions** - Good for chat messages used as knowledge base\n",
    "    * **Child Documents** - Parent Document Retriever\n",
    "* **Graph Based Chunking** - Transposing your raw text into a graph structure\n",
    "\n",
    "### Summaries\n",
    "Instead of embedding your raw text, embed a summary of your raw text which will have more dense information"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "fce9678d-187e-4293-b1aa-eda9045035ee",
   "metadata": {},
   "outputs": [],
   "source": [
    "import uuid\n",
    "\n",
    "from langchain.chat_models import ChatOpenAI\n",
    "from langchain.prompts import ChatPromptTemplate\n",
    "from langchain_core.documents import Document\n",
    "from langchain_core.output_parsers import StrOutputParser\n",
    "from langchain.text_splitter import RecursiveCharacterTextSplitter\n",
    "from langchain.retrievers.multi_vector import MultiVectorRetriever\n",
    "from langchain.storage import InMemoryByteStore\n",
    "from langchain.embeddings import OpenAIEmbeddings\n",
    "from langchain.vectorstores import Chroma"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b445bc40-531b-4a65-b4ee-852377862ce9",
   "metadata": {},
   "source": [
    "Let's use our Super Linear essay again. I'll split it into large chunks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "ca8c1a25-aaff-4d74-a5fd-f681f7cf478f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "You have 6 docs\n"
     ]
    }
   ],
   "source": [
    "with open('../../data/PGEssays/superlinear.txt') as file:\n",
    "    essay = file.read()\n",
    "\n",
    "splitter = RecursiveCharacterTextSplitter(chunk_size=4000, chunk_overlap=0)\n",
    "\n",
    "docs = splitter.create_documents([essay])\n",
    "\n",
    "print (f\"You have {len(docs)} docs\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b418bdb-c03c-4885-8a74-983c5732f6dc",
   "metadata": {},
   "source": [
    "Spin up a chain that will quickly summarize for you"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "460da5b4-cd95-4ea5-ae21-57c2cf99b80f",
   "metadata": {},
   "outputs": [],
   "source": [
    "chain = (\n",
    "    {\"doc\": lambda x: x.page_content}\n",
    "    | ChatPromptTemplate.from_template(\"Summarize the following document:\\n\\n{doc}\")\n",
    "    | ChatOpenAI(max_retries=0)\n",
    "    | StrOutputParser()\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df67afe1-694f-47a5-acea-7a788ea5ba07",
   "metadata": {},
   "source": [
    "Then let's get the summaries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "d6473c02-5728-418d-a201-5216d83599dd",
   "metadata": {},
   "outputs": [],
   "source": [
    "summaries = chain.batch(docs, {\"max_concurrency\": 5})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f9282853-9a62-4ffd-a1bf-b0e8853ed864",
   "metadata": {},
   "source": [
    "Let's look at a sample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "6ecc0c8f-3eb5-4e42-bd6e-2fdec56cc5b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"The document discusses the concept of superlinear returns for performance, where the rewards for performance are not proportional to the effort put in. It explains that this concept is present in various aspects of life, such as business, fame, power, military victories, and benefit to humanity. The document emphasizes the importance of understanding this concept, especially for ambitious individuals. It also discusses how exponential growth and thresholds are fundamental causes of superlinear returns, using examples such as bacterial cultures and startups. The document also mentions Y Combinator's focus on growth rate as a key factor in achieving exponential growth. Additionally, it explores how humans are not naturally accustomed to exponential growth and discusses historical examples of exponential growth, such as empires.\""
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "summaries[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9aaa4786-1d43-463b-a63d-55e1a9f35af3",
   "metadata": {},
   "source": [
    "Then we are going to create a vectorstore (holds vectors + summaries) and a docstore (holds raw docs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "cc76c297-804f-4e5a-9fed-f28b88f57059",
   "metadata": {},
   "outputs": [],
   "source": [
    "# The vectorstore to use to index the child chunks\n",
    "vectorstore = Chroma(collection_name=\"summaries\", embedding_function=OpenAIEmbeddings())\n",
    "\n",
    "# The storage layer for the parent documents\n",
    "store = InMemoryByteStore()\n",
    "\n",
    "id_key = \"doc_id\"\n",
    "\n",
    "# The retriever (empty to start)\n",
    "retriever = MultiVectorRetriever(\n",
    "    vectorstore=vectorstore,\n",
    "    byte_store=store,\n",
    "    id_key=id_key,\n",
    ")\n",
    "doc_ids = [str(uuid.uuid4()) for _ in docs]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "63f44d2b-6a25-431c-be0b-72fff86e019c",
   "metadata": {},
   "source": [
    "Then you want to create documents out of your summary list, add the doc_id to it's metadata. This will tie it back to the original document so you know which summary goes with which original doc."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "032d5cb8-cfe5-4a89-bb9a-fb2872e41be3",
   "metadata": {},
   "outputs": [],
   "source": [
    "summary_docs = [\n",
    "    Document(page_content=s, metadata={id_key: doc_ids[i]})\n",
    "    for i, s in enumerate(summaries)\n",
    "]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "02878000-5341-42fc-a1b0-a7e9da3367d7",
   "metadata": {},
   "source": [
    "Then add them both to your vectorestore and docstore. When you add the docs to the vectorstore it will get the embeddings for them too."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "53351f4d-f5db-4aeb-9b79-f4a0a3ba30f6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Adds the summaries\n",
    "retriever.vectorstore.add_documents(summary_docs)\n",
    "\n",
    "# Adds the raw documents\n",
    "retriever.docstore.mset(list(zip(doc_ids, docs)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e761a8ae-d31c-483b-bdf4-4a625e3e9662",
   "metadata": {},
   "source": [
    "Then if you want you can add the original docs to the vectorstore as well. Just make sure to add the doc id to it as well so you can tie it all together"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "d5c3b781-3166-4d91-ad03-48bc8b246d61",
   "metadata": {},
   "outputs": [],
   "source": [
    "# for i, doc in enumerate(docs):\n",
    "#     doc.metadata[id_key] = doc_ids[i]\n",
    "# retriever.vectorstore.add_documents(docs)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3397531-c8d3-4037-8f64-c51eeb6dc49b",
   "metadata": {},
   "source": [
    "Great, now that we've done all that work, let's try a search. If you run the code below, you'll search on the summary embeddings, but you'll get the raw documents returned."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "b2b9848e-136b-496f-b3ba-f57720a11993",
   "metadata": {},
   "outputs": [],
   "source": [
    "# retriever.get_relevant_documents(query=\"the concept of superlinear returns, which refers to the idea that the returns for performance are not linear\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7d6ab29-a89a-4259-847d-492ccbaad02f",
   "metadata": {},
   "source": [
    "### Hypothetical Questions\n",
    "You can generate hypothetical questions about your raw documents. Check out [LangChain's](https://python.langchain.com/docs/modules/data_connection/retrievers/multi_vector#hypothetical-queries) implementation of it for more information.\n",
    "\n",
    "This is espeically helpful when you have sparse unstructured data, like chat messages.\n",
    "\n",
    "Say you were to build a bot that uses slack conversations as a knowledge base. Trying to do semantic search on raw chat messages might not have the greatest results. However, if you were to generate hypothetical questions that the slack messages would answer, then when you get a new question in, you'll likely have a better chance matching.\n",
    "\n",
    "The code for this will be the same as the summary code, but instead of asking the LLM to make a summary, you'll ask it for hypothetical questions.\n",
    "\n",
    "### Parent Document Retriever (PDR)\n",
    "Much like the previous two, Parent Document Retriever builds on the concept of doing semantic search on a varied representation of your data.\n",
    "\n",
    "The hypothesis with the PDR is that smaller chunks have a higher likely hood of being matched semantically with a potential query. However, those smaller chunks may not have all the context they need, so instead of passing the smaller chunks to your LLM, get the parent chunk of the smaller chunk. This means you get a larger chunk which the smaller chunk is placed in.\n",
    "\n",
    "Check out LangChain's implementation's implementation of it [here](https://python.langchain.com/docs/modules/data_connection/retrievers/parent_document_retriever).\n",
    "\n",
    "I have a full tutorial on it at [FullStackRetrieval.com](https://fullstackretrieval.com/) if you want to go deeper on that.\n",
    "\n",
    "I want to quickly go over a similar method in [Llama Index](https://www.llamaindex.ai/) with their `HierarchicalNodeParser` which will split a document at various chunk sizes (there will be a bunch of overlaps but that is the purpose). When combined with their `AutoMergingRetriever` you can do complicated retrieval easily. Their walkthrough [here](https://docs.llamaindex.ai/en/stable/examples/retrievers/auto_merging_retriever.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "d078afc3-ecea-4cf1-b430-e27837508e86",
   "metadata": {},
   "outputs": [],
   "source": [
    "from llama_index.node_parser import HierarchicalNodeParser\n",
    "\n",
    "node_parser = HierarchicalNodeParser.from_defaults(\n",
    "    chunk_sizes=[2048, 512, 128],\n",
    "    chunk_overlap=0\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "11c19a08-6a94-45a4-8d31-1ad91e014030",
   "metadata": {},
   "outputs": [],
   "source": [
    "documents = SimpleDirectoryReader(\n",
    "    input_files=[\"../../data/PGEssays/mit.txt\"]\n",
    ").load_data()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "26a9ecb0-c264-40cc-938a-3610c1a31835",
   "metadata": {},
   "source": [
    "Then let's do our splitting. There will be a bunch of chunks since we included `128` as a chunk size above"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "9806e1a0-79df-418d-962d-3757081fd273",
   "metadata": {},
   "outputs": [],
   "source": [
    "nodes = node_parser.get_nodes_from_documents(documents)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "8ad26bbc-1b67-45dc-b44e-d62e36fd3589",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "You have 118 nodes\n"
     ]
    }
   ],
   "source": [
    "print (f\"You have {len(nodes)} nodes\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d703f821-f2e2-4975-a904-893007bb256c",
   "metadata": {},
   "source": [
    "Then let's look at the relationships that are available to one of the small nodes at the end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "c037ce3e-d480-43e6-be47-0e7415153480",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{<NodeRelationship.SOURCE: '1'>: RelatedNodeInfo(node_id='e3cee07e-460b-4cc9-95ad-93fc4bba0f58', node_type=<ObjectType.TEXT: '1'>, metadata={'file_path': '../../data/PGEssays/mit.txt', 'file_name': 'mit.txt', 'file_type': 'text/plain', 'file_size': 36045, 'creation_date': '2024-01-22', 'last_modified_date': '2023-12-21', 'last_accessed_date': '2024-03-11'}, hash='6e91b93d9f1ccaca77ad93ca986701dcb3e0605f685a67338cf1cf7350fb9236'),\n",
       " <NodeRelationship.PREVIOUS: '2'>: RelatedNodeInfo(node_id='ffbeb21c-1920-404c-9ffa-2dfa453a4a8f', node_type=<ObjectType.TEXT: '1'>, metadata={'file_path': '../../data/PGEssays/mit.txt', 'file_name': 'mit.txt', 'file_type': 'text/plain', 'file_size': 36045, 'creation_date': '2024-01-22', 'last_modified_date': '2023-12-21', 'last_accessed_date': '2024-03-11'}, hash='4c3163fbaee0bc2de2bbcb5decca5cf81cc839d85f294039af0f9c848acf6c11'),\n",
       " <NodeRelationship.NEXT: '3'>: RelatedNodeInfo(node_id='3462052a-d7d3-491a-9930-511bf6b6583b', node_type=<ObjectType.TEXT: '1'>, metadata={}, hash='2f9985a39495c94fe30b766ece62c378020dfc37a26a99f484b0ee0b97efb46d'),\n",
       " <NodeRelationship.PARENT: '4'>: RelatedNodeInfo(node_id='e3cee07e-460b-4cc9-95ad-93fc4bba0f58', node_type=<ObjectType.TEXT: '1'>, metadata={'file_path': '../../data/PGEssays/mit.txt', 'file_name': 'mit.txt', 'file_type': 'text/plain', 'file_size': 36045, 'creation_date': '2024-01-22', 'last_modified_date': '2023-12-21', 'last_accessed_date': '2024-03-11'}, hash='6e91b93d9f1ccaca77ad93ca986701dcb3e0605f685a67338cf1cf7350fb9236')}"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nodes[-2].relationships"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a6fb0ed8-4427-4e8d-a8e9-9d11f3dcef9a",
   "metadata": {},
   "source": [
    "You can see there are source, previous, next, and parent. For [more information on these](https://docs.llamaindex.ai/en/stable/api/llama_index.schema.NodeRelationship.html).\n",
    "\n",
    "### Graph Structure\n",
    "If your data is rich with entities, relationships, and connections, then a graph structure may be best for you.\n",
    "\n",
    "Few options:\n",
    "* [Diffbot](https://www.diffbot.com/)\n",
    "* [InstaGraph](https://github.com/yoheinakajima/instagraph) - By [Yohei](https://twitter.com/yoheinakajima)\n",
    "\n",
    "I'll run through the LangChain supported version of Diffbot due to brevity. You'll need an API key from DB"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "547ee2d2-f852-4f01-bc1b-ec5355f36e4c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# !pip3 install langchain langchain-experimental openai neo4j wikipedia\n",
    "\n",
    "from langchain_experimental.graph_transformers.diffbot import DiffbotGraphTransformer\n",
    "\n",
    "diffbot_nlp = DiffbotGraphTransformer(diffbot_api_key=os.getenv(\"DIFFBOT_API_KEY\", 'YourKey'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "e63a7ffb-acdc-4fd3-b4ba-9ce4eb09bcfa",
   "metadata": {},
   "outputs": [],
   "source": [
    "text = \"\"\"\n",
    "Greg is friends with Bobby. San Francisco is a great city, but New York is amazing.\n",
    "Greg lives in New York. \n",
    "\"\"\"\n",
    "docs = [Document(page_content=text)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "41436339-39c6-4cf7-aba6-0a2dcafec00b",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "graph_documents = diffbot_nlp.convert_to_graph_documents(docs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "250215f0-2ba9-49e4-8aef-1751ccc1b1bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[GraphDocument(nodes=[Node(id='Greg', type='Person', properties={'name': 'Greg'}), Node(id='http://www.wikidata.org/entity/Q60', type='Location', properties={'name': 'New York City'}), Node(id='Bobby', type='Person', properties={'name': 'Bobby'})], relationships=[Relationship(source=Node(id='Greg', type='Person'), target=Node(id='http://www.wikidata.org/entity/Q60', type='Location'), type='PERSON_LOCATION', properties={'evidence': 'Greg lives in New York.', 'isCurrent': 'true'}), Relationship(source=Node(id='Greg', type='Person'), target=Node(id='http://www.wikidata.org/entity/Q60', type='Location'), type='PERSON_LOCATION', properties={'evidence': 'Greg lives in New York.', 'isCurrent': 'true'}), Relationship(source=Node(id='Greg', type='Person'), target=Node(id='Bobby', type='Person'), type='SOCIAL_RELATIONSHIP', properties={'evidence': 'Greg is friends with Bobby.'})], source=Document(page_content='\\nGreg is friends with Bobby. San Francisco is a great city, but New York is amazing.\\nGreg lives in New York. \\n'))]"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph_documents"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "949e24e2-1d32-4ff3-a16e-ada98e46d6be",
   "metadata": {},
   "source": [
    "## Wrap up\n",
    "\n",
    "Congratulations on making it to the end of this video. The aim was to educate you on the chunking theory, give a nod to retrieval, and encourage you to try out these methods on your data.\n",
    "\n",
    "I always like hearing what you think about the code, video or how you use this in your role. Let me know on [twitter](https://twitter.com/GregKamradt) or email (contact@dataindependent.com)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19567c26",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
